我们知道SVM的基本原理就是找一个超平面(广义平面)将样本分为几个部分,即分类。

MATLAB中自带SVM包,使用起来也十分方便,假如X是特征矩阵,Y是分类标签(可以是数值(1、2)也可以是string,总之有区别就行。)

二分类代码

SVMModel 

线性分类和非线性分类

我们在训练分类器的时候需要选择是线性分类还是非线性分类,比如如下两种:显然第一种适合线性分类,第二种适合曲线分类,也就是存在“异或”问题,需要映射到高维空间来寻找超平面。这种类似的选择称为“核函数”的选择,fitcsvm命令的KernelFunction可以选择三个核函数:'linear', 'gaussian' (or 'rbf'), 'polynomial',当然也可以自己编写核函数。核函数的选择是SVM分类器的最重要的参数。

举例:

SVMModel 

9260b7e7299f41462237ba8c9d337685.png

aab395eb8000c06ca8a67e948db33f9e.png

分多类情形

%MATLAB自带数据,每一个样本都是两个特征,Y代表其分类,此数据中分类标签为3种。

load 

%%将数据二维展示;%图中不同的颜色即为不同的标签。

figure

2e727578a90e4ed4c2c1eb3a9d24c072.png

%不同分类训练分类器

SVMModels 

%用meshgrid画出网格,并将网格点作为测试样本。计算每个测试样本的得分。

其中scores是一个多行三列的向量,每一列代表此种分类的可能性大小。maxScore代表最可能的分类。

d 

%二维显示训练样本和测试样本。其中将不同的预测分类结果用不同的颜色展示

figure

ac6d838fcf6417c700a44a40d81e5c9d.png

算法类文章我都会同期更新到个人公众号:宽客塔,欢迎关注~~

这个公众号以前是写金融类消息的,后来因为个人转行,就改为分享机器学习算法知识,也算是边学边写,跟大家共同学习~

更多推荐