J'ai un certain nombre de classes et de vecteurs de fonctionnalités correspondants, et lorsque j'exécuterai Predict_proba (), j'obtiendrai ceci:
classes = ['one','two','three','one','three']
feature = [[0,1,1,0],[0,1,0,1],[1,1,0,0],[0,0,0,0],[0,1,1,1]]
from sklearn.naive_bayes import BernoulliNB
clf = BernoulliNB()
clf.fit(feature,classes)
clf.predict_proba([0,1,1,0])
>> array([[ 0.48247836, 0.40709111, 0.11043053]])
Je voudrais savoir quelle probabilité cela correspond à quelle classe. Sur cette page, il est dit qu'ils sont classés par ordre arithmétique, je ne suis pas sûr à 100% de ce que cela signifie: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC .html # sklearn.svm.SVC.predict_proba
Cela signifie-t-il que j'ai parcouru mes exemples de formation attribuer l'index correspondant à la première rencontre d'une classe, ou y a-t-il une commande comme
clf.getClasses() = ['one','two','three']?
Utilisez simplement le .classes_
attribut du classificateur pour récupérer le mappage. Dans votre exemple, cela donne:
>>> clf.classes_
array(['one', 'three', 'two'],
dtype='|S5')
Et merci d'avoir mis un script de reproduction minimaliste dans votre question, il est très facile de répondre en copiant-collant simplement dans un shell IPython :)
En règle générale, tout attribut d'un apprenant se terminant par _ est un attribut appris. Dans votre cas, vous recherchez clf.classes_
.
Généralement en Python, vous pouvez utiliser la fonction dir
pour trouver les attributs d'un objet.
import pandas as pd
test = [[0,1,1,0],[1,1,1,0]]
pd.DataFrame(clf.predict_proba(test), columns=clf.classes_)
Out[2]:
one three two
0 0.542815 0.361876 0.095309
1 0.306431 0.612863 0.080706
import pandas as pd
test = [[0,1,1,0],[1,1,1,0]]
pd.DataFrame(clf.predict_proba(test), columns=clf.classes_)
Sortie [2]:
one three two
0 0.542815 0.361876 0.095309
1 0.306431 0.612863 0.080706
Je suis nouveau à python et apprends mon chemin. Comment pourriez-vous maintenant regrouper la réponse ci-dessus en 2 colonnes représentant la probabilité maximale par index. En gros, ajouter 2 colonnes "Number" et "probabilité" et trouver la probabilité la plus élevée à travers l'index et le nombre associé
La sortie doit être:
Number probability
0. One 0.542815
1. Three 0.612863