如何利用支持向量机完成线性二分类
时间: 2023-12-13 18:04:11 浏览: 50
支持向量机是一种常用于二分类问题的机器学习算法,可以利用它完成线性二分类。下面是一个简单的示例,演示如何使用支持向量机完成线性二分类:
1. 加载数据集
假设我们有一个二维数据集,其中包含两个类别,我们可以使用Matlab自带的fisheriris数据集进行演示。首先,我们需要加载数据集并将其划分为两个类别:
```matlab
load fisheriris
X = meas(51:end,3:4);
Y = (strcmp(species(51:end),'versicolor'));
```
在这里,我们只选择了数据集中的两个特征作为输入变量,并将花的种类 'versicolor' 看作正例,其他花的种类看作负例。
2. 训练SVM分类器
接下来,我们可以使用fitcsvm函数训练一个SVM分类器,并使用predict函数对测试集进行分类:
```matlab
SVMModel = fitcsvm(X,Y,'KernelFunction','linear','ClassNames',[false true]);
pred = predict(SVMModel,X);
```
在这里,我们指定了线性核函数,并将类别名称设为 [false true],其中 false 表示负例,true 表示正例。
3. 可视化分类结果
最后,我们可以使用scatter函数可视化分类结果,将正例用蓝色点表示,负例用红色点表示,将分类的超平面用黑色线表示:
```matlab
figure;
gscatter(X(:,1),X(:,2),Y,'rb','+o',[],'off');
hold on;
sv = SVMModel.SupportVectors;
plot(sv(:,1),sv(:,2),'ko','MarkerSize',10);
xlim([0 7]);
ylim([0 3]);
title('SVM Classification');
xlabel('Petal Length');
ylabel('Petal Width');
legend('Negative','Positive','Support Vectors');
hold off;
```
这里,我们使用gscatter函数将数据集可视化,使用SupportVectors属性获取支持向量,使用plot函数将支持向量标记在图中。
上述代码将正例用蓝色加号表示,负例用红色圆圈表示,将分类的超平面用黑色线表示,支持向量用黑色圆圈表示。分类器的结果看起来很不错,超平面能够很好地将两个类别分开。