2013-05-31 5 views
28

У меня есть несколько классов и соответствующие векторы признаков, и когда я бегу predict_proba() Я получаю это:Как найти соответствующий класс в clf.predict_proba()

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]]) 

Я хотел бы получить какая вероятность соответствует тому классу. На этой странице говорится, что они упорядочены по арифметическому порядку, я не уверен на 100%, что это означает: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC.predict_proba

Означает ли это, что я прошел через свои учебные примеры, присваивая соответствующий индекс первой встрече класс, или есть команда, как

clf.getClasses() = ['one','two','three']?

ответ

45

Используйте атрибут .classes_1 классификатора для восстановления отображения. В вашем примере, что дает:

>>> clf.classes_ 
array(['one', 'three', 'two'], 
     dtype='|S5') 

И спасибо за то, минималистичный воспроизведение сценария в вашем вопросе, он делает отвечать очень легко, просто скопировать и вставляя в IPython оболочки :)

+9

Для одного sample, 'zip (clf.classes_, clf.predict_proba (x) [0])' дает читаемый результат. –

+0

есть способ передать предопределенный порядок классификатору? – thecheech

+0

Вы можете назвать свои классы '0, 1, 2 ...' непосредственно, если хотите. В противном случае вы можете использовать атрибут clf.classes_ для выполнения обратного сопоставления. – ogrisel

8

как правило, любой атрибут в обучающегося, который заканчивается _ это изученный один. В вашем случае вы ищете clf.classes_.

Как правило, в Python вы можете использовать функцию dir, чтобы узнать, какие атрибуты у объекта есть.

1
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 
Смежные вопросы