【问题标题】:SVM Classifications on set of images of digits in MatlabMatlab中数字图像集的SVM分类
【发布时间】:2020-04-07 15:07:57
【问题描述】:

我必须在数字数据集上使用 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】:

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

    % 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,:));
    

    请注意,您的标签会生成单个向量。

    The Mathworks 将svmtrain 更改为fitcsvm 的原因是为了简洁。现在很清楚是“分类”(fitcsvm)还是“回归”(fitrsvm)。

    【讨论】:

      猜你喜欢
      • 2013-05-20
      • 2019-01-30
      • 2012-02-21
      • 2013-01-23
      • 1970-01-01
      • 2013-07-04
      • 2015-04-07
      • 2011-03-05
      • 2013-04-20
      相关资源
      最近更新 更多