libsvmread
命令的第二个输出是每个给定训练样本的一组特征。
例如,在以下MATLAB命令中:
[heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
第二个变量(heart_scale_inst)包含了我无法理解的形式的内容,例如:
<1, 1> -> 0.70833
这意味着什么?如何使用它(我无法以这种形式绘制它)?
附言。如果有人能推荐一个好的LIBSVM教程,我将不胜感激。我还没有找到任何有用的资料,README文件也不是很清楚…谢谢。
回答:
对于初学者来说,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参数),但上述代码行就是你如何使用这些数据进行训练的方法。