matlab自带svm函数进行二分类

今天讲一讲支持向量机(svm)二分类的用法。

1 原理

具体的推导笔者就不说了,可以自行百度。SVM本质就是找出最小类间距离并使其最大化。分离面称作超平面。核函数本质上决定了它的分类精度,包括多项式核(polynomial kernel),径向基函数核(RBF kernel),拉普拉斯核(Laplacian kernel),Sigmoid核(Sigmoid kernel)。svm有很多类型。libsvm是其中使用最为广泛的。现在matlab有自带的svm包,但是只能用于二分类,如果需要三分类或者多分类,则要使用libsvm,必须下载其软件包。

下载链接:https://www.csie.ntu.edu.tw/~cjlin/libsvm/#matlab

安装教程:https://blog.csdn.net/cherry4500/article/details/71257973

libsvm实例:https://blog.csdn.net/weixin_42296976/article/details/81160114

2 matlab自带的svm函数

主要是svmtrain和svmclassify函数。可以在svmtrain中选择核函数类型,曲线拟合程度(c与sigma参数的选择)等。

贴参数选择实例:https://blog.csdn.net/red_stone1/article/details/54313821

https://blog.csdn.net/weiqiwu1986/article/details/56056860

3 实例

我这个是对小麦白粉病和条锈病做分类。

function [accuracy,predict_group] =FITCSVM_classification(training,training_group,test,test_group)
%training数据行是样本数目,列是样本特征数目(维数),此处我的每个样本特征是40维。训练样本60个。
%group 分为0和1,1正例,0反例,行是样本数目,列是标签,就一列。

SVMStruct=svmtrain(training,training_group,'kernel_function','linear','showplot',true);%FITCSVM
% sigma=0.5;
% sigma=3;%sigma越小曲线越复杂,越容易过拟合,对测试集的预测越不准
% SVMStruct=svmtrain(training,training_group,'kernel_function','rbf','rbf_sigma',...
%      sigma,'showplot',true);
% C = 1;%c越大曲线越复杂,越容易过拟合,对测试集的预测越不准,也不是绝对。sigma的影响更普遍。
% SVMStruct = svmtrain(training,training_group,'kernel_function','rbf','boxconstraint',...
%     C,'showplot',true);
%样本的行是样本数目,列是样本特征数,与training数据一致
predict_group=svmclassify(SVMStruct,test,'showplot',true);%ClassificationSVM,默认是线性分类函数
accuracy = (1-sum(abs(predict_group-test_group))/length(test_group))*100;
figure(6)
a = randperm(30);%测试集30个样本
b = sort(a);
plot(b,predict_group,'r*');
hold on
plot(b,test_group,'go');%,'MarkerFaceColor','g'
title('SVM分类结果')
%加一个预测标签和测试集标签的回归分析图

%超过3维分类超平面就无法画出。
%xlswrite('output.xlsx',group)

结果图如下所示:

红色*表示预测标签,绿色圆表示真实的标签。用linear能达到93.33%的精度。

  • 5
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

撒哈拉的小屋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值