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

实验内容

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函数实现人脸图的二分类。再次,通过调节参数,可以在一定程度上提高识别精度。最后,我对支持向量机的的理解更加深刻,并且能够调用函数实现支持向量机对数据集的分类。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Orange_Jet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值