【MATLAB】机器学习:支持向量机SVM二分类实验

  • Post author:
  • Post category:其他





实验内容

1.掌握lib-svm的安装,了解libsvm的使用和参数设置。

2.根据两类人脸图,实现二分类实验

3.获得不同参数下的分类精度。




libsvm


libsvm安装参考链接



make不成功解决方案连接




实验代码

%% ********************************问题2***************************************
clear;clc;
%% 导入图片数据
img_path0="C:\machine learning\10.实验十\人脸图";
tab={'1','2'};
x1=[];x2=[]; % 分别用于存放文件夹1和文件夹2下的数据
for i=1:size(tab,2)
    path_regexp=strcat(img_path0,'\',tab{i},'\','*.bmp');    % 图片路径的正则表达式 
    file=dir(path_regexp);   % 符合path_regexp正则表达式的文件
    for j=1:size(file)
        img_name=file(j).name;
        img_path=strcat(img_path0,'\',tab{i},'\',img_name); % 图片的路径
        image=imread(img_path);
        image=im2double(image); 
        if i==1
           x1=[x1,image(:)];    % 若为文件夹1,则放入x1矩阵
        else
           x2=[x2,image(:)];    % 若为文件夹2,则放入x2矩阵
        end
    end
end
%% 留出法划分训练集和测试集
% 文件夹1
n1=randperm(size(x1,2));
x1_train=x1(:,n1(1:round(length(n1)*2/3)));
x1_test=x1(:,n1(round(length(n1)*2/3)+1:end));
% 文件夹2
n2=randperm(size(x2,2));
x2_train=x2(:,n2(1:round(length(n2)*2/3)));
x2_test=x2(:,n2(round(length(n2)*2/3)+1:end));
% 组合成训练集和测试集
train=[x1_train,x2_train];
train_label=[ones(1,size(x1_train,2)),2*ones(1,size(x2_train,2))];
test=[x1_test,x2_test];
test_label=[ones(1,size(x1_test,2)),2*ones(1,size(x2_test,2))];
%% 数据预处理:用自带函数mapminmax将训练集和测试集归一化处理[0,1]之间
% 训练集
train=mapminmax(train,0,1);
% 测试集
test=mapminmax(test,0,1);
%% 使用libsvm进行二分类
model=svmtrain(train_label',train');      % 训练模型
[predict_label, accuracy, dec_values]=svmpredict(test_label',test',model); % 测试分类


%% **********************************问题3***************************************
model=svmtrain(train_label',train','-t 2 -g 2.8');      % 训练模型
[predict_label, accuracy, dec_values]=svmpredict(test_label',test',model); % 测试分类




实验心得

通过本次“支持向量机二分类”实验,首先,我成功安装了lib-svm的安装,了解libsvm的使用和参数设置。其次,我能够通用调用lib-svm中的svmtrain和svmpredict函数实现人脸图的二分类。再次,通过调节参数,可以在一定程度上提高识别精度。最后,我对支持向量机的的理解更加深刻,并且能够调用函数实现支持向量机对数据集的分类。



版权声明:本文为Orange_Jet原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。