0

Ich bin ein Neuling in Scikit-lernen und Klassifizierung. Meine Aufgabe ist ein Multi-Label-Klassifikationsproblem. AS Ich verstehe predict gibt Array mit n Tupel, die die gleiche Menge an Features in Probe ist. Was heißt das? Wie kann ich strenge Ordnung und strenge Menge von vorhergesagten Werten bekommen? Da x_test = X_train[0] Ausgang Result [('a', 'c'),(),()] und x_test = X_train[0] Ausgänge Result [('a',),(),()]So behandeln Sie die Antwort OneVsRestClassifier in Scikit lernen für Multilabel

import numpy as np 
from sklearn.svm import SVC 
from sklearn.multiclass import OneVsRestClassifier 
from sklearn.preprocessing import MultiLabelBinarizer 

input_data = [ 
    [0, 2, 0, 'a', 'c'], 
    [0, 2, 0, 'a', 'c'], 
    [0, 2, 0, 'a', 'c'], 
    [0, 1, 0, 'a', 'c'], 
    [1, 2, 1, 'b', 'e'], 
    [1, 2, 0, 'b', 'd'], 
    [1, 2, 0, 'a', 'e'], 
    [1, 2, 0, 'a', 'd'], 
    [1, 1, 0, 'a', 'c'] 
] 
X = [x[0:3] for x in input_data] 
y = [x[-2:] for x in input_data] 


X_train = np.array(X) 
y_train = np.array(y) 
mlb = MultiLabelBinarizer() 
y_train = mlb.fit_transform(y_train) 

classifier = OneVsRestClassifier(SVC()) 

classifier.fit(X_train, y_train) 

x_test = X_train[0] 
result = classifier.predict(x_test) 
labels = mlb.inverse_transform(result) 
print("Result %s" % labels) 

Antwort

0

Ihr Ergebnis positiv oder negativ für die fünf Klassen, so, 'a' 'c' für Test [0] und 'a' für den zweiten. Der Zweck der Multilabel-Klassifizierung besteht darin, alle Daten mit 0-5 der fünf Klassen zu kennzeichnen.

Wenn Sie streng zwei Etiketten möchten, können Sie zwei einzelne Label-Klassifizierungen ausführen, es könnte ausreichen.