原因:应该调用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 = 166
obj = -107.553365, rho = 0.449867
nSV = 131, nBSV = 103
Total nSV = 131
Accuracy = 86.2963% (233/270) (classification)
附:
我在运行matlab >> [heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');
时,报错说找不到heart_scale
,这是因为heart_scale
在上一级目录中,复制到当前目录就行了,很奇怪,不知道为啥别人都可以。