MATLAB/Octave中的LIBSVM - libsvmread的输出是什么?

4
libsvmread命令的第二个输出是每个给定训练样本的一组特征。
例如,在以下MATLAB命令中:
[heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');

这个第二个变量(heart_scale_inst)保存了一种我不理解的形式的内容,例如:
<1, 1> -> 0.70833

什么是它的意思?如何使用它(我无法绘制它,因为现在的情况)?
PS. 如果有人能推荐一个好的LIBSVM教程,我会很感激。我没有找到有用的资料,README文件也不是很清楚...谢谢。

3
听起来像是一个“稀疏”矩阵。键入“whos heart_scale_label heart_scale_inst”以查看。 - chappjc
可能是如何在Matlab中使用libsvm?的重复问题。 - chappjc
感谢@chappjc。在我发问之前,我已经看到您提到的链接了;实际上,我尝试实现了该问题的答案,但是现在卡住了:(那么稀疏矩阵代表什么呢?哪一部分是特征,其余部分又是什么呢...? - Cheshie
2个回答

8
对于初学者的LIBSVM的权威教程称为:SVM分类的实用指南,可以从LIBSVM作者的网站上获得。
第二个返回参数称为实例矩阵。它是一个矩阵,我们称之为M,M(1,:)是数据点1的特征,以此类推。该矩阵是稀疏的,因此打印出来看起来有些奇怪。如果您想完全查看它,请打印full(M)。
[heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');

使用 heart_scale_label 和 heart_scale_inst,您应该能够通过以下命令训练一个 SVM:
mod = svmtrain(heart_scale_label,heart_scale_inst,'-c 1 -t 0');

我强烈建议您阅读上面链接的指南,以了解如何设置c参数(在使用RBF核函数时可能还需要设置gamma参数),但以上行是用于训练该数据的方法。

感谢@carlosdc!这是一个稀疏矩阵,里面几乎没有0,真的很奇怪...我感到困惑是因为我甚至无法将矩阵绘制成图形-但好吧,现在我知道在Octave中绘制稀疏矩阵并不简单...所以再次感谢! :) - Cheshie

-1

我认为这是测试用例被预测为heart_scale标签类别的概率


1
谢谢@MohitJain,但是在我训练数据之前已经执行了libsvmread...它怎么能预测标签呢? - Cheshie
抱歉之前没看到!! - Mohit Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接