s生成两类不同分布的数据,编程实现一个使用线性核的支持向量机模型。要求画出图形
时间: 2024-03-03 07:52:47 浏览: 124
支持向量机实践#人脸识别
以下是一个生成两类不同分布的数据,并使用线性核的支持向量机模型的 MATLAB 代码示例:
```matlab
% 生成两类不同分布的数据
rng(1); % 设置随机数种子
N = 100; % 每个类别的样本数
X1 = [randn(N,2)*0.5+ones(N,2); randn(N,2)*0.5-ones(N,2)]; % 第一类样本
X2 = [randn(N,2)*0.5-ones(N,2); randn(N,2)*0.5+ones(N,2)]; % 第二类样本
Y = [ones(2*N,1); -ones(2*N,1)]; % 标签
% 画出数据分布图
figure;
plot(X1(:,1),X1(:,2),'ro'); hold on;
plot(X2(:,1),X2(:,2),'bx'); hold off;
legend('Class 1','Class 2');
title('Data Distribution');
% 使用线性核的支持向量机模型
SVMModel = fitcsvm([X1;X2],Y,'KernelFunction','linear');
% 画出决策边界
figure;
plot(X1(:,1),X1(:,2),'ro'); hold on;
plot(X2(:,1),X2(:,2),'bx'); hold off;
legend('Class 1','Class 2');
title('Decision Boundary');
hold on;
sv = SVMModel.SupportVectors;
scatter(sv(:,1),sv(:,2),'k','filled');
xlim([-3 3]); ylim([-3 3]); % 设置坐标轴范围
[x1,x2] = meshgrid(-3:0.1:3,-3:0.1:3);
x = [x1(:),x2(:)];
y = predict(SVMModel,x);
contour(x1,x2,reshape(y,size(x1)),[-1 0 1],'k');
```
这个示例代码使用了 `randn` 函数生成两类不同分布的数据,并使用 `fitcsvm` 函数来训练一个使用线性核的支持向量机模型。然后,使用 `scatter` 函数画出支持向量,使用 `contour` 函数画出决策边界。最后,使用 `xlim` 和 `ylim` 函数设置坐标轴范围,以便更好地显示数据分布和决策边界。
阅读全文