libSVM多类别概率输出问题

在libsvm模型进行预测时predict返回的三个参数分别为:

-predicted_label:第一个返回值 nx1,表示样本的预测类标号;
-accuracy:第二个返回值,1×1,表示分类的正确率;
-prob_estimates:第三个返回值,nxk,每一行表示这个样本分别属于每一个类别的概率。

然而,坑来了。。。。

您的程序中所返回的第三个参数中的概率顺序极有可能并不是按照真实的类别0-(k-1)的类别排序的。

注意,是可能。因为大部分情况是正常的,因而查询了很多也没注意到相关介绍,最后在 [这里] 看到相同情况。

此时,才留意到,其实predict返回的概率结果排序是按照标签的输入顺序依次排序的,因而前面的标签会排在前面。

此时可通过model.Label将标签顺序打印出来,并根据此进行重排序

[label,rOrder] = sort(model.Label);
predict_scoresR = predict_scores(:,rOrder);

得到正确的顺序 predict_scoresR.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>