我想在我的数据功能上使用svm,knn,adaboost分类器。我建立了代码,我计算了帧差异并计算了特征(eigenvalues,应变能量,势能)....构建了一个[帧数,特征]的数组。我尝试使用svm:
Features = data; % Features array [40, 5]
class = ones(numFrames-1, 1); % numFrames=41
class(1:(fix(numFrames/2))) = -1;
SVMstruct = svmtrain(Features, class, 'Kernel_Function', 'rbf');
newclass = svmclassify(SVMstruct, [40 5]); %Test data
我收到了一个错误:
TEST和训练数据中的列数必须相等。
%classperf(CP,的NewClass); cp'`
给出的班级表现
出现此错误的原因是什么?如何使用此功能集进一步使用分类器?
答案 0 :(得分:2)
我可以从你得到的错误中推断出以下内容。
svmtrain
中没有错误,表示size(features)=[40 5]
。错误在最后一行。请参阅svmclassify
的语法。您传递的测试数据样本与您的案例5)中的训练数据具有相同数量的特征/列。相反,您传递的[40 5]
大小只有两列。通过n
行和5
列的实际测试集。最后一行应该是
newclass= svmclassify(SVMstruct,testData); %where size(testData)=[n 5], n indicates how many test samples you have.