MATLAB fitcsvm 绘制分类超平面及支持向量

MATLAB fitcsvm 绘制分类超平面及支持向量

在这里插入图片描述
代码如下:

close all
clear
clc
%% 数据部分
%请自行更换数据
data= xlsread('E:\2021科研\sci_research_2021\小论文\试验\2021_11_24_firelose\基于频谱_均方频率频率方差_归一化训练数据.xlsx');
sd=data(:,1:2);%归一化的二维样本
y=data(:,3);
Y=nominal(y);%标签

%% 原始数据图像
figure(1);
a=gscatter(sd(:,1),sd(:,2),Y,'rb','^.');%绘制散点图,r-红色;b-蓝色;^-三角形;.-legend(a,{'\fontname{宋体}失火故障工况特征样本','\fontname{宋体}正常工况特征样本','Support Vectors'},'Location','Northwest');%给折线加上图例,并放在西北角
xlim([0 0.8]);%限制x轴显示范围
ylim([0 0.7]);%限制y轴显示范围
xlabel('\fontname{宋体}均方频率(归一化)');%设置x轴标签名称
ylabel('\fontname{宋体}频率方差(归一化)');%设置y轴标签名称
set(gca,'Fontname', 'Times New Roman','FontSize',12);%设置字体为Times New Roman,大小为12

%%  SVM训练
optimal_C=1.9;%可以看成是一个约束,这个值默认是1,这个值越小,则margin越大,说明在训练中允许的错误样本数越多,支持向量个数也越多,泛化能力越强。
%当这个值很大的时候,那么margin越小,支持向量的数目也越小,同时过拟合的风险也会增大

% SVMModel=fitcsvm(sd, Y, 'KernelFunction', 'linear', ...
%     'BoxConstraint', optimal_C, 'KernelScale', optimal_gamma);
SVMModel=fitcsvm(sd, Y, 'KernelFunction', 'linear', 'BoxConstraint', optimal_C);%选择线性核函数
[lable,score]=predict(SVMModel,sd);

%% 画图
figure(2);
h = nan(3,1); 
h(1:2) = gscatter(sd(:,1),sd(:,2),Y,'rb','^.'); 
hold on
h(3) =plot(sd(SVMModel.IsSupportVector,1),sd(SVMModel.IsSupportVector,2),'ko','MarkerSize',10);%画出支持向量

%画出决策边界
w=-SVMModel.Beta(1,1)/SVMModel.Beta(2,1);%斜率
b=-SVMModel.Bias/SVMModel.Beta(2,1);%截距
x_ = 0:0.01:1;
y_ = w*x_+b;
y2=y_+1/SVMModel.Beta(2,1);%支持向量所在边界
y3=y_-1/SVMModel.Beta(2,1);%支持向量所在边界
plot(x_,y_,'k-',x_,y2,'k--',x_,y3,'k--','MarkerSize',10)
hold on
legend(h,{'\fontname{宋体}失火故障工况特征样本','\fontname{宋体}正常工况特征样本','Support Vectors'},'Location','Northwest');
xlim([0 0.8]);
ylim([0 0.7]);
xlabel('\fontname{宋体}均方频率(归一化)');
ylabel('\fontname{宋体}频率方差(归一化)');
set(gca,'Fontname', 'Times New Roman','FontSize',12);
hold off
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值