SVM线性可分二分类 matlab代码
时间: 2023-07-05 11:09:35 浏览: 102
二分类SVM的matlab代码
以下是一个简单的SVM线性可分二分类的matlab代码示例:
```matlab
% 生成数据
X1 = randn(50,2) + 1;
X2 = randn(50,2) - 1;
Y = [-ones(50,1); ones(50,1)];
X = [X1; X2];
% 训练SVM模型
svmmodel = fitcsvm(X,Y,'KernelFunction','linear');
% 绘制分类边界和支持向量
figure;
h = 0.02;
[x1,x2] = meshgrid(min(X(:,1)):h:max(X(:,1)), min(X(:,2)):h:max(X(:,2)));
xgrid = [x1(:),x2(:)];
[~,scores] = predict(svmmodel,xgrid);
hold on
contour(x1,x2,reshape(scores(:,2),size(x1)),[0 0],'k');
gscatter(X(:,1),X(:,2),Y);
scatter(svmmodel.SupportVectors(:,1),svmmodel.SupportVectors(:,2),100,'k','filled');
legend('SVM边界','类别1','类别2','支持向量');
```
这段代码首先生成了一个二分类数据集,然后使用`fitcsvm`函数训练了一个SVM模型,其中`KernelFunction`参数指定为`linear`表示使用线性核函数。最后,使用`contour`函数绘制了SVM分类边界和支持向量。
阅读全文