如何通过支持向量机中的predict()函数知道类预测的概率?

pos*_*res 24 svm scikit-learn

我如何知道样本的概率属于由支持向量机中的Scikit-Learn的predict()函数预测的类?

>>>print clf.predict([fv])
[5]
Run Code Online (Sandbox Code Playgroud)

有什么功能吗?

Ale*_*lex 29

绝对阅读文档的这一部分,因为涉及一些细微之处.另见Scikit-learn predict_proba给出了错误的答案

基本上,如果你有一个包含大量数据的多类问题,那么如前所述,predict_proba运行良好.否则,您可能必须处理不会从decision_function获得概率分数的排序.

这是使用predict_proba获取字典或类与概率列表的一个很好的主题:

model = svm.SVC(probability=True)
model.fit(X, Y)
results = model.predict_proba(test_data)[0]

# gets a dictionary of {'class_name': probability}
prob_per_class_dictionary = dict(zip(model.classes_, results))

# gets a list of ['most_probable_class', 'second_most_probable_class', ..., 'least_class']
results_ordered_by_probability = map(lambda x: x[0], sorted(zip(model.classes_, results), key=lambda x: x[1], reverse=True))
Run Code Online (Sandbox Code Playgroud)


Bas*_*erg 14

使用clf.predict_proba([fv])获取每个类具有预测概率的列表.但是,此功能并非适用于所有分类器.

关于您的评论,请考虑以下事项:

>> prob = [ 0.01357713, 0.00662571, 0.00782155, 0.3841413, 0.07487401, 0.09861277, 0.00644468, 0.40790285]
>> sum(prob)
1.0
Run Code Online (Sandbox Code Playgroud)

概率总和为1.0,因此乘以100得到百分比.


ogr*_*sel 10

创建SVC类时,通过设置来计算概率估计probability=True:

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

然后fit像往常一样打电话然后predict_proba([fv]).

  • 那么这正是你要找的:7级40%(假设第一级是"0级"),3级38%,5级10%,4级7%. (3认同)