59

我有许多类和相应的特征向量,当我运行 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']?

4

3 回答 3

91

只需使用.classes_分类器的属性来恢复映射。在你的例子中,给出:

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

并且感谢您在您的问题中添加了一个简约的复制脚本,只需在 IPython shell 中复制和粘贴即可轻松回答:)

于 2013-05-31T13:59:26.463 回答
16
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
于 2017-06-09T19:13:51.510 回答
14

通常,以 _ 结尾的学习器中的任何属性都是已学习的。在您的情况下,您正在寻找clf.classes_.

一般在 Python 中,你可以使用dir函数来找出一个对象有哪些属性。

于 2013-05-31T13:58:41.460 回答