网站首页 > 技术教程 正文
wine.mat
原始数据
在SVM程序算法中做分类可视化
目前可以选取两个
输入特征
且为做二分类的
问题
才能可视化
例如选取标签为
1、2
的前两列特征作为
输入特征
%%
clc
clear all
load('C:\Users\Administrator\Desktop\wine1.mat')
data1 = wine(1:59,:);
data2 = wine(60:130,:);
%选择两维进行分类可视化
p = 2;
q = p+1;
%合并样本数据
data0=[data1;data2];
train_data=data0(:,p:q);
train_label=data0(:,1);
%原始样本分布图灰度均值与灰度方差
figure('NumberTitle', 'on', 'Name','灰度均值与灰度方差');
hold on;
grid on;
plot(data1(:,p),data1(:,q),'*'),
plot(data2(:,p),data2(:,q),'+'),
title('训练样本数据');
原始数据散点图
分布可视化
在SVM中
径向基核函数宽度
以及惩罚因子
需要迭代寻优
可采用交叉验证的方式
找到一个较优的组合
%交叉验证部分代码略去
%cmd中参量为待优化选取参量
cmd = ['-c ',num2str( bestc ),' -g ',num2str( bestg )];
model=libsvmtrain(train_label,train_data,cmd); %径向基函数
test_label=train_label;
test_data=train_data;
[predict_label,accuracy,dec_values] = svmpredict(test_label,test_data, model);
训练和预测结束以后
对结果进行可视化呈现
程序设计
%%
demension1 = 1;
demension2 = 2;
minX = min(test_data(:, demension1));
maxX = max(test_data(:, demension1));
minY = min(test_data(:, demension2));
maxY = max(test_data(:, demension2));
gridX = (maxX - minX) ./ 100;
gridY = (maxY - minY) ./ 100;
minX = minX - 10 * gridX;
maxX = maxX + 10 * gridX;
minY = minY - 10 * gridY;
maxY = maxY + 10 * gridY;
[denseX, denseY] = meshgrid(minX:gridX:maxX, minY:gridY:maxY);
%%
model.Parameters(1) = 3;
[m,n]=size(denseX);
dense_data=[reshape(denseX,m*n, 1), reshape(denseY,m*n,1)];
dense_label = ones(m*n,1);
%密集点分类
model.Parameters(1) = 3;
[lab] =svmpredict(dense_label,dense_data, model);
dense_pre_lab = reshape(lab, m,n);
%%
%画分类后的点及SV
figure('NumberTitle', 'on', 'Name','分类结果可视化');
hold on;
grid on;
m=length(predict_label);
for i=1:m
if (predict_label(i)==1) %标签为1
a= plot(test_data(i, 1), test_data(i, 2), 'r+');
end
if (predict_label(i)==2) %标签为2
b= plot(test_data(i, 1), test_data(i, 2), 'k*');
end
end
c= plot( model.SVs(:,1),model.SVs(:,2),'o' ); %支持向量
legend([a,b,c],'class1','class2','Support Vectors');
[C,h] = contour(denseX, denseY, dense_pre_lab,-1:1);
clabel(C,h,'Color','r'); %类似等温曲线图
%曲线参数调整
xlabel('灰度均值','FontSize',12);
ylabel('灰度方差','FontSize',12);
title('The visualization of classification','FontSize',12);
执行程序代码
输出可视化图像
分类准率在
95%以上
值得思考的问题是
有支持向量
并未在曲线上
显示PSO算法优化后
准确率随迭代寻优
的变化情况
历经20次迭代寻优
结果达到最优
记录此时返回优化参数即可
同理
可以查看其它特征输入下
可视化情况
THE
END
猜你喜欢
- 2024-11-06 关于几种熵的计算(MATLAB)(matlab熵值法求权重)
- 2024-11-06 Python与Matlab画图的代码对比(matlab跟python)
- 2024-11-06 「话说嵌入式」STM32控制算法验证之Matlab PIL
- 2024-11-06 基于BP神经网络的QPSK解调算法matlab性能仿真
- 2024-11-06 MATLAB使用蒙特卡洛算法实例求解线性规划
- 2024-11-06 基于MATLAB的ACC控制算法设计及仿真测试
- 2024-11-06 「一」MATLAB语言之常见函数及符号运算
- 2024-11-06 基于无线传感器网络的MCKP-MMF算法matlab仿真
- 2024-11-06 基于最小二乘递推算法的系统参数辨识matlab仿真
- 2024-11-06 「话说嵌入式」STM32算法的翅膀之MATLAB
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)