Interpretation der Scikit-Vorhersage_proba-Ausgabe

12

Ich arbeite mit der Scikit-Learn-Bibliothek in Python. Im folgenden Code prognostiziere ich die Wahrscheinlichkeit, weiß aber nicht, wie ich die Ausgabe lesen soll.

Daten testen

from sklearn.ensemble import RandomForestClassifier as RF
from sklearn import cross_validation

X = np.array([[5,5,5,5],[10,10,10,10],[1,1,1,1],[6,6,6,6],[13,13,13,13],[2,2,2,2]])
y = np.array([0,1,1,0,1,2])

Teilen Sie den Datensatz

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.5, random_state=0) 

Berechnen Sie die Wahrscheinlichkeit

clf = RF()
clf.fit(X_train,y_train)
pred_pro = clf.predict_proba(X_test)
print pred_pro

Die Ausgabe

[[ 1.  0.]
 [ 1.  0.]
 [ 0.  1.]]

Die X_test-Liste enthält 3 Arrays (ich habe 6 Samples und test_size = 0,5), also hat die Ausgabe auch 3.

Aber ich sage 3 Werte (0,1,2) voraus. Warum bekomme ich nur 2 Elemente in jedem Array?

Wie soll ich die Ausgabe lesen?

Ich habe auch festgestellt, dass beim Ändern der Anzahl der unterschiedlichen Werte in y die Anzahl der Spalten in der Ausgabe immer die Anzahl der unterschiedlichen Werte von y -1 ist.

HonzaB
quelle
Willkommen bei CrossValidated. Hast du meine Antwort unten gesehen? Wenn es Ihre Frage gelöst hat, markieren Sie es als die richtige Antwort. Andernfalls lassen Sie mich wissen, was fehlt, und ich werde versuchen, es für Sie zu klären.
Ben

Antworten:

5

Schau es dir an y_train. Es ist array([0, 0, 1]). Dies bedeutet, dass Ihr Split die Stichprobe mit y = 2 nicht aufgenommen hat. Ihr Modell hat also keine Ahnung, dass die Klasse y = 2 existiert.

Sie benötigen mehr Beispiele, um etwas Sinnvolles zurückzugeben.

Lesen Sie auch die Dokumente, um zu verstehen, wie die Ausgabe interpretiert wird.

Ben
quelle
1
Das ist richtig. Wenn Sie eingestellt y = np.array([0,2,1,0,1,2])und random_state=2Sie werden sehen , jetzt 3 Spalten von Ausgang
oT
Die Antwort löste meine Frage. Vielen Dank. Und in welcher Reihenfolge sind die Spalten bitte? Es ist immer aufsteigend?
HonzaB
Ausführen clf.classes_. Die Spalten werden in dieser Reihenfolge angezeigt.
Ben
Einfach so : clf.fit(X_train,y_train).classes_?
HonzaB
1
Ich denke, das wird funktionieren, aber du kannst einfach rennen, clf.classes_ nachdem du gelaufen bistclf.fit(X_train,y_train)
Ben