Подтвердить что ты не робот

Как найти соответствующий класс в 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']?

4b9b3361

Ответ 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