我正在自学分类,我阅读并理解了MatLab在线帮助中关于使用fisher iris数据集的简单LDA分类器的内容。
现在我转向了SVM。尽管我使用了帮助页面上的确切语法,但我还是收到了输入参数不足或过多的错误信息。
我已经使用svmtrain
命令训练了我的SVM分类器,命令如下:
SVMStruct = svmtrain(training,labels);
其中training
是一个207行900列的训练矩阵,包含207个样本和900个HoG描述符或特征。同样,labels
是一个207行1列的列向量,包含每个样本的+1
或-1
标签。
然后我想测试它,看看是否有效,调用命令如下:
Group = svmclassify(SVMStruct,sample,'Showplot',true)
其中sample
是一个2行900列的矩阵,包含2个测试样本。我期望得到+1
和-1
,因为这些是测试样本应有的标签。但我收到了错误信息:
输入参数过多。
当我使用以下命令时
Group = svmclassify(SVMStruct,sample)
我得到了错误信息
输入参数不足。
回答:
你可能重载了svmclassify
函数。
尝试
>> which svmclassify
来验证你是否确实调用了正确的函数。
如果你重载了该函数(即,创建了一个同名svmclassify
的不同函数),并且它在你的path
中位置更高,那么你需要重命名重载的函数,然后再次运行svmclassify
。