SVM 模型不支持概率估计?
Posted
技术标签:
【中文标题】SVM 模型不支持概率估计?【英文标题】:SVM Model does not support probability estimation? 【发布时间】:2014-03-28 01:53:04 【问题描述】:我正在使用支持向量机 (SVM) 执行一些分类任务。 我正在使用 libSVM(支持 Matlab)来预测概率估计矩阵。但是,libSVM 显示消息: 模型不支持概率估计 以下是我的示例代码; (train_label 包含训练数据的标签,test_label 包含测试数据的标签)
model = svmtrain(train_label, train_data, '-t 2 -g .01 -c 0.7 -b 1);
[y,accuracy,prob_estimates]=svmpredict(test_label,test_data,model,'-b 1');
谁能告诉我我的做法是否有问题?任何帮助/建议将不胜感激。
【问题讨论】:
【参考方案1】:不知道Matlab的实现,但通常你必须设置这个option:
-b probability_estimates:是否训练SVC或SVR模型进行概率估计,0或1(默认0)
【讨论】:
感谢您的回复。但我已经为训练和预测设置了选项“-b 1”。 @user35919 抱歉,忽略了这一点。您是否使用-t
选项尝试过不同的 SVM 类型? (我只是猜测,不确定这是否会有所帮助)。
是的,我确实尝试过使用“-t 1”和“-t 2”。没有区别。
@user35919 再次道歉,-t
指定了内核类型,我想建议尝试不同的 SVM 类型,通过-s
[0... 4] 指定。这是我最后的猜测;)【参考方案2】:
我以同样的方式使用 libsvm 没有任何问题。
在您的代码中,以下行中仅缺少一个 '
model = svmtrain(train_label, train_data, '-t 2 -g .01 -c 0.7 -b 1);
应该是
model = svmtrain(train_label, train_data, '-t 2 -g .01 -c 0.7 -b 1');
【讨论】:
感谢@Zahid Mahmood。【参考方案3】:我遇到了同样的问题,模型中没有ProbA
和ProbB
。
在它是这样并给出错误之前:
linear_model = svmtrain(trainClass, trainData, ['-t 0', cmd]);
然后我把它改成了这个,错误消失了:) - 删除了 cmd 并输入了准确的值
linear_model = svmtrain(trainClass, trainData, ['-t 0 -c 1 -g 0.125 -b 1']);
如果仍然出错,请尝试更改 c
和 g
参数。
希望这会有所帮助。
【讨论】:
【参考方案4】:这是因为您的模型不支持概率估计。
您应该在训练和测试过程中都使用“-b 1”选项。
另请参阅:https://***.com/a/43509667/7893127
【讨论】:
【参考方案5】:您可以只使用默认参数训练模型。 在训练和测试程序时尝试使用“-b 1”。
【讨论】:
这并没有提供问题的答案。一旦你有足够的reputation,你就可以在任何帖子上comment。还要检查这个what can I do instead。【参考方案6】:C:\setup\python36\Lib\site-packages\svm.py
self.probability
的默认值为0
。可以设置1
。
【讨论】:
以上是关于SVM 模型不支持概率估计?的主要内容,如果未能解决你的问题,请参考以下文章
SVM 模型将概率分数大于 0.1(默认阈值 0.5)的实例预测为正例