原因:应该调用libsvm/matlab中的svmtrain,但是在matlab自带的工具箱中也有svmtrain这个函数,matlab会跑去调用它自带的函数。
解决办法: 1、在setpath中可以把libsvm/matlab和libsvm/windows添加进来,或者置顶 2、把matlab自带工具箱中的svmtrain改一个名字,svmtrain所在位置:your_matlab_ location/Matlab/toolbox/stats/stats 3、我遇到过这个问题两次,第一次用上述的第二种方法解决了,结果过几天又不行了,于是我在一篇关于libsvm配置的文章中看到可以去改libsvm中svmtrain的名字,于是有了如下方法: 修改libsvm/matlab中有关svmtrain的名字,如libsvmtrian,然后修改libsvm/windows中有关svmtrain的名字,和前一个一致就行。注意两个子文件夹中的名字都要改。
测试svmtrain能否使用: 在命令窗中输入以下命令:
>> [heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');>> model = libsvmtrain(heart_scale_weight, heart_scale_label, heart_scale_inst, '-c 1');>> [PRedict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);如果配置成功的话,会显示一下内容:
*optimization finished, #iter = 166obj = -107.553365, rho = 0.449867nSV = 131, nBSV = 103Total nSV = 131Accuracy = 86.2963% (233/270) (classification)附: 我在运行matlab >> [heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');
时,报错说找不到heart_scale
,这是因为heart_scale
在上一级目录中,复制到当前目录就行了,很奇怪,不知道为啥别人都可以。
新闻热点
疑难解答