SVM二分类的matlab代码
时间: 2024-01-10 21:59:11 浏览: 21
以下是一个简单的SVM二分类的Matlab代码:
% 生成样本数据
rng(1); % 设置随机数种子
N = 100; % 样本数量
X = randn(N,2); % 生成N个二维正态分布样本
Y = sign(X(:,1).*X(:,2)); % 确定标签(Y = 1或-1)
% 训练SVM模型
model = fitcsvm(X,Y); % 使用默认参数训练SVM模型
% 绘制决策边界
figure;
h = 0.02; % 网格步长
[x1Grid,x2Grid] = meshgrid(min(X(:,1)):h:max(X(:,1)),...
min(X(:,2)):h:max(X(:,2)));
xGrid = [x1Grid(:),x2Grid(:)];
[~,scores] = predict(model,xGrid);
contour(x1Grid,x2Grid,reshape(scores(:,2),size(x1Grid)),[0 0],'k');
hold on;
gscatter(X(:,1),X(:,2),Y,'rb','+x')
title('SVM决策边界')
xlabel('特征 1')
ylabel('特征 2')
legend('决策边界','Y = 1','Y = -1','Location','Best')
axis tight
hold off
以上代码中,我们首先生成了100个二维正态分布样本,并根据它们的特征值的乘积确定了它们的标签(1或-1)。接着,我们使用fitcsvm函数训练SVM模型,并使用contour函数绘制了SVM的决策边界。最后,我们使用gscatter函数将样本点可视化。