Как найти соответствующий класс в clf.predict_proba()
У меня есть ряд классов и соответствующих векторов признаков, и когда я запускаю pred_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']?
Ответы
Ответ 1
Просто используйте атрибут .classes_
классификатора для восстановления сопоставления. В вашем примере, который дает:
>>> clf.classes_
array(['one', 'three', 'two'],
dtype='|S5')
И спасибо за то, что вы поместили минималистическое воспроизведение script в свой вопрос, он делает очень простой ответ, просто скопировав и вставив в оболочку IPython:)
Ответ 2
Как правило, любой атрибут учащегося, который заканчивается на _, является изученным. В вашем случае вы ищете clf.classes_
.
Как правило, в Python вы можете использовать функцию dir
, чтобы узнать, какие атрибуты у объекта есть.
Ответ 3
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
Ответ 4
import pandas as pd
test = [[0,1,1,0],[1,1,1,0]]
pd.DataFrame(clf.predict_proba(test), columns=clf.classes_)
Из [2]:
one three two
0 0.542815 0.361876 0.095309
1 0.306431 0.612863 0.080706
Я новичок в Python и изучаю свой путь. Как можно теперь сгруппировать вышеуказанный ответ в 2 столбца, представляющих максимальную вероятность для индекса. В основном добавляем 2 столбца "Число" и "вероятность" и находим наибольшую вероятность по индексу и связанному числу
Вывод должен быть:
Number probability
0. One 0.542815
1. Three 0.612863