Matlab错误:Y must be a vector or a character array

10 篇文章 0 订阅

原因:应该调用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在上一级目录中,复制到当前目录就行了,很奇怪,不知道为啥别人都可以。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值