【问题标题】:Probability outputs of MATLAB LIBSVMMATLAB LIBSVM 的概率输出
【发布时间】:2014-09-09 14:51:09
【问题描述】:

我正在为 Matlab 使用 LIBSVM 工具箱。我的问题是标签为 1(真)和 0(假)的二元分类问题。当我用这个功能训练我的系统时:

svmstruct = svmtrain(TrainTargets, TrainInputs,['-t 2 ' '-g ' SIGMA ' -c ' P ' -q' ' -b 1']);

并使用此功能测试我的测试准确性:

[TestOutputs, ~, ~] = svmpredict(TestTargets, TestInputs, svmstruct,'-b 1 -q');

现在我想使用设计的 SVM 模型来输出样本数据。所以我使用了这个功能:

[OUT, ~, Prob_Out] = svmpredict(zeros(size(Outsample_DATA,1),1), Outsample_DATA, svmstruct,'-q -b 1');

对于我的第一个训练模型(我用不同的参数训练了 SVM 模型)我有这个输出(输出样本数据集在两种情况下都是相同的):[Prob_Out OUT]

0.8807    0.1193         0
0.8717    0.1283         0
0.0860    0.9140    1.0000
0.7846    0.2154         0
0.7685    0.2315         0
0.7916    0.2084         0
0.0326    0.9674    1.0000
0.7315    0.2685         0
0.3550    0.6450    1.0000

第二个我有这个:

0.4240    0.5760         0
0.4090    0.5910         0
0.7601    0.2399    1.0000
0.5000    0.5000    1.0000
0.4646    0.5354         0
0.4589    0.5411         0

假设我想找到具有这些概率的 1 类。在第一组数据中,当第 2 列大于第 1 列时,该样本属于第 1 类,但在第二组中,当第 1 列大于第 2 列时,该样本属于第 1 类。

这两个输出样本数据的结构是相同的。有什么问题?

谢谢。

附言。 当我在这些模型中训练模型后检查 SVMstruct 参数时,标签是 [0;1] 而另一个标签是 [1;0] !

【问题讨论】:

    标签: matlab svm probability libsvm


    【解决方案1】:

    正如您已经注意到的,差异是由于标签的不同映射。

    LIBSVM 在内部使用自己的标签,因此需要在内部标签和您提供的标签之间进行映射。

    此映射中的标签是按照标签在训练数据中出现的顺序生成的。因此,如果训练数据中第一个元素的标签发生变化,标签映射也会发生变化。

    【讨论】:

    • 谢谢。所以我必须手动将其转换为我想要的标签。
    猜你喜欢
    • 2016-04-04
    • 2015-02-01
    • 2014-08-11
    • 2015-05-06
    • 2012-12-06
    • 2014-04-07
    • 2013-05-18
    • 2011-12-09
    • 2015-06-24
    相关资源
    最近更新 更多