MATLAB/Octave 中的 LIBSVM - libsvmread 的输出是啥?
Posted
技术标签:
【中文标题】MATLAB/Octave 中的 LIBSVM - libsvmread 的输出是啥?【英文标题】:LIBSVM in MATLAB/Octave - what's the output of libsvmread?MATLAB/Octave 中的 LIBSVM - libsvmread 的输出是什么? 【发布时间】:2013-11-23 15:29:20 【问题描述】:libsvmread
命令的第二个输出是每个给定训练示例的一组特征。
例如,在以下 MATLAB 命令中:
[heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
第二个变量 (heart_scale_inst) 以我不理解的形式保存内容,例如:
<1, 1> -> 0.70833
这是什么意思?它是如何使用的(我无法绘制它,它是这样的)?
PS。如果有人可以推荐一个好的 LIBSVM 教程,我将不胜感激。我没有发现任何有用的东西,而且 README 文件也不是很清楚...谢谢。
【问题讨论】:
听起来像一个sparse
矩阵。输入whos heart_scale_label heart_scale_inst
即可查看。
How to use libsvm in Matlab?的可能重复
谢谢@chappjc。在发布我的问题之前,我已经看到了您提到的链接;实际上,我尝试实现对那个问题的答案,这就是我卡住的地方:(那么稀疏矩阵代表什么?哪部分是特征,其余部分是什么......?
【参考方案1】:
LIBSVM 初学者的权威教程被称为:A Practical Guide to SVM Classification 它可以从 LIBSVM 的作者的网站上获得。
返回的第二个参数称为实例矩阵。它是一个矩阵,我们称它为 M,M(1,:) 是数据点 1 的特征,以此类推。矩阵是稀疏的,这就是为什么它会奇怪地打印出来。如果你想看到它完全打印满(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!太奇怪了,它是一个稀疏矩阵,里面几乎没有零......我很困惑,因为我什至无法绘制矩阵(作为图表) - 但是好的,现在我看到以八度音阶绘制稀疏矩阵不是直截了当......所以再次感谢! :)【参考方案2】:我认为是测试用例被预测为 heart_scale 标签类别的概率
【讨论】:
感谢@MohitJain,但 libsvmread 是在我训练数据之前执行的......它怎么能预测标签? 抱歉之前没看到!!以上是关于MATLAB/Octave 中的 LIBSVM - libsvmread 的输出是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 MATLAB/Octave 中查找 N 维数组中的所有局部最小值
ILNumerics 等效于 MatLab/Octave 语句
通过将数字分组到一个范围内在 matlab / octave 中绘图