sklearn是Python中最常用的一个机器学习库,其中封装好了大量的机器学习方法,使用起来十分方便。
支持向量机(Support Vector Machine,简称SVM)是一种强大分类方法(也可以用于回归),它在处理小样本,高维度数据时效果非常好。SVM的核心思想是寻找不同类别数据之间的边界,通过划定不同类数据所属不同的边界来完成分类。
看一个最简单的例子:
对于二维数据来说,用一条线就可以划定不同类之间的边界。这个边界确定之后,对于任何一个点,我们都能判断它所属的类别。但是,将两类点切割开来的线理论上来说有无数条,这就带来一个问题,不同的切割线将为预测集带来不同的预测结果。试想将图中的深蓝线旋转不同的角度,虽可以将红绿两部分分割开来,但是当我们在图中新加入一个点时,这个新点又该属于哪一类?
这个问题的解决方法很简单,那就是画一条最“粗”的线,即图中的两条浅蓝线。这就是边界最大化。那么,我们如何确定这个最大化的边界呢?你会发现上图中两条浅蓝线分别穿过了两个点,即这两个点正好就在边界上,这两个点是关键点,被称为支持向量。
这就是支持向量机的思想,对于多维数据来说,我们要找的就不是“线”,而是"面"了。比如说在对于三维数据来说,我们找的就是一个二维平面作为边界,将这些点切割开来:
SVM还可以将数据映射到高维空间,使得很多非线性分类也可以实现。通过选择适当的核函数,我们就能实现高维空间的分类!这使得很多难划分边界的低维数据也可以高精度分类,这正是SVM强大之处。
下面以高慧璇的《应用多元统计分析》一书中的例题5.1.1为例,使用Python的sklearn库用SVM方法对样品进行判别。
在此我将例题的数据保存在csv文件中:
代码:
输出的结果:
如果觉得本文有用,请点赞、转发、打赏。您的支持是我买咖啡的动力!
领取专属 10元无门槛券
私享最新 技术干货