如何在clf.predict_proba()中找到相应的类

use*_*145 41 python machine-learning scikit-learn

我有许多类和相应的特征向量,当我运行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]])
Run Code Online (Sandbox Code Playgroud)

我想得到什么概率对应什么类.在这个页面上它说它们是按照算术顺序排序的,我不是100%肯定这意味着什么:http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn .svm.SVC.predict_proba

这是否意味着我已经通过我的训练示例将相应的索引分配给第一次遇到类,或者是否有类似的命令

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

ogr*_*sel 64

只需使用.classes_分类器的属性即可恢复映射.在您的示例中给出:

>>> clf.classes_
array(['one', 'three', 'two'], 
      dtype='|S5')
Run Code Online (Sandbox Code Playgroud)

感谢您在问题中添加简约的再现脚本,只需在IPython shell中复制和粘贴就可以轻松回答:)

  • 对于单个样本,`zip(clf.classes_,clf.predict_proba(x)[0])`给出可读输出. (10认同)

laz*_*zy1 9

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

通常在Python中,您可以使用该dir函数来找出对象具有哪些属性.


pom*_*ber 8

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
Run Code Online (Sandbox Code Playgroud)