[Matlab中数字图像集的SVM分类

问题描述 投票:0回答:1

我必须在数字数据集上使用SVM分类器。数据集由数字28x28的图像和总共2000张图像组成。我尝试使用svmtrain,但是matlab给出了svmtrain已被删除的错误。所以现在我正在使用fitcsvm。

我的代码如下:

labelData = zeros(2000,1);

for i=1:1000
labelData(i,1)=1;
end

for j=1001:2000
labelData(j,1)=1;
end

SVMStruct =fitcsvm(trainingData,labelData) 
%where training data is the set of images of digits.

我需要知道如何使用svm预测测试数据的输出?另外我的代码正确吗?

matlab classification svm digits
1个回答
1
投票

您正在寻找的功能是predict。它以SVM对象作为输入,后跟一个数据矩阵,并返回预测的标签。确保不对所有数据而是对合理的子集(通常为70%)训练模型。您可以使用predict准备:

cross-validation

请注意,您的标签会产生一个单一的矢量。

The Mathworks将% create cross-validation object cvp = cvpartition(Lbl,'HoldOut',0.3); % extract logical vectors for training and testing data lgTrn = cvp.training; lgTst = cvp.test; % train SVM mdl = fitcsvm(Dat(lgTrn,:),Lbl(lgTrn)); % test / predict SVM Lbl_prd = predict(mdl,Dat(lgTst,:)); 更改为svmtrain的原因很简洁。现在很清楚是“分类”(fit c svm)还是“回归”(fit r svm)。

© www.soinside.com 2019 - 2024. All rights reserved.