支持向量机matlap案例
时间: 2023-10-18 13:11:43 浏览: 44
下面是一个在Matlab中使用支持向量机的简单案例:
假设我们有一个二元分类问题,我们需要在两个类别之间绘制决策边界。我们可以使用SVM来解决这个问题。首先,我们需要生成一些随机数据:
```matlab
rng(1); % 设置随机数生成器的种子
X = [randn(20,2)+2; randn(20,2)-2]; % 生成20个正样本和20个负样本
Y = [ones(20,1); -ones(20,1)]; % 将它们标记为1和-1
```
接下来,我们使用fitcsvm函数来训练SVM模型:
```matlab
SVMModel = fitcsvm(X,Y); % 训练SVM模型
```
我们可以使用predict函数来对新数据进行分类:
```matlab
newX = [1 1; -1 -1]; % 生成两个新的数据点
[label,score] = predict(SVMModel,newX); % 对它们进行分类
```
最后,我们可以使用plot函数来绘制训练数据和决策边界:
```matlab
sv = SVMModel.SupportVectors; % 获取支持向量
figure;
gscatter(X(:,1),X(:,2),Y); % 绘制训练数据
hold on;
plot(sv(:,1),sv(:,2),'ko','MarkerSize',10); % 绘制支持向量
plot(newX(label==1,1),newX(label==1,2),'r*','MarkerSize',10); % 绘制被分类为1的新数据点
plot(newX(label==-1,1),newX(label==-1,2),'g*','MarkerSize',10); % 绘制被分类为-1的新数据点
title('Decision Boundary'); % 添加标题
```
这将生成一个图像,其中正样本用红色星号表示,负样本用绿色星号表示,支持向量用黑色圆圈表示,决策边界用虚线表示。
这是一个简单的SVM案例,你可以通过改变数据和参数来进行实验和研究。