Einfaches Beispiel mit BernoulliNB (naiver bayes-classifier) scikit-learn, die in python kann nicht erklären, Klassifizierung
Mit scikit-learn 0.10
Warum hat die folgenden trivialen code-snippet:
from sklearn.naive_bayes import *
import sklearn
from sklearn.naive_bayes import *
print sklearn.__version__
X = np.array([ [1, 1, 1, 1, 1],
[0, 0, 0, 0, 0] ])
print "X: ", X
Y = np.array([ 1, 2 ])
print "Y: ", Y
clf = BernoulliNB()
clf.fit(X, Y)
print "Prediction:", clf.predict( [0, 0, 0, 0, 0] )
Drucken Sie die Antwort "1" ? Trainiert hat das Modell auf [0,0,0,0,0] => 2 ich rechne auch mit einer "2" als Antwort.
Und warum ersetzen von Y mit
Y = np.array([ 3, 2 ])
Geben, eine andere Klasse "2" als Antwort (die richtige) ? Dies ist nicht nur ein Klasse Etikett?
Kann jemand etwas Licht in diese Schuppen?
- Du hast Recht, die änderung Y sollte sich daran nichts ändern. Konnte ich reproduzieren mit dem aktuellen master. Ich denke, das hat zu tun mit der Klassifizierer als unentschlossen.
- Mit 0.18.2, ich bin immer 2 ohne änderung alpha.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig alpha, der smoothing-parameter. Als msw sagte, Ihre Ausbildung ist sehr klein. Aufgrund der Glättung, ohne Informationen gelassen wird. Setzen Sie alpha auf einen sehr kleinen Wert, Sie sollten sehen, das Ergebnis, das Sie erwartet.
Ihre Trainings-set ist zu klein, da können angezeigt werden, indem
ergibt
was zeigt, dass der Klassifikator Blick auf alle Klassifizierungen wie gleichwahrscheinlichen. Sie vergleichen mit dem Beispiel in der Dokumentation für BernoulliNB für die
predict_proba()
ergibt:wo ich angewendet
numpy.exp()
um Ergebnisse, um Sie leichter lesbar. Offensichtlich ist, werden die Wahrscheinlichkeiten sind nicht einmal annähernd gleich und in der Tat gut klassifizieren der Ausbildung festgelegt.