Matlab中数字图像集的SVM分类
Posted
技术标签:
【中文标题】Matlab中数字图像集的SVM分类【英文标题】:SVM Classifications on set of images of digits in Matlab 【发布时间】: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 预测测试数据的输出?此外,我的代码是否正确?
【问题讨论】:
【参考方案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)。
【讨论】:
以上是关于Matlab中数字图像集的SVM分类的主要内容,如果未能解决你的问题,请参考以下文章
图像分类基于matlab HOG+SVM图像分类识别含Matlab源码 2141期
《计算机视觉和图像处理简介 - 中英双语版》:基于scikit-learn 进行手写数字图片分类SVM
病虫害识别基于matlab GUI SVM病虫害识别系统含Matlab源码 2429期
路面分类基于matlab灰度共生矩阵图形纹理检测+SVM路面状况分类含Matlab源码 1519期