首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用sklearn实现支持向量机

sklearn是Python中最常用的一个机器学习库,其中封装好了大量的机器学习方法,使用起来十分方便。

支持向量机(Support Vector Machine,简称SVM)是一种强大分类方法(也可以用于回归),它在处理小样本,高维度数据时效果非常好。SVM的核心思想是寻找不同类别数据之间的边界,通过划定不同类数据所属不同的边界来完成分类。

看一个最简单的例子:

对于二维数据来说,用一条线就可以划定不同类之间的边界。这个边界确定之后,对于任何一个点,我们都能判断它所属的类别。但是,将两类点切割开来的线理论上来说有无数条,这就带来一个问题,不同的切割线将为预测集带来不同的预测结果。试想将图中的深蓝线旋转不同的角度,虽可以将红绿两部分分割开来,但是当我们在图中新加入一个点时,这个新点又该属于哪一类?

这个问题的解决方法很简单,那就是画一条最“粗”的线,即图中的两条浅蓝线。这就是边界最大化。那么,我们如何确定这个最大化的边界呢?你会发现上图中两条浅蓝线分别穿过了两个点,即这两个点正好就在边界上,这两个点是关键点,被称为支持向量

这就是支持向量机的思想,对于多维数据来说,我们要找的就不是“线”,而是"面"了。比如说在对于三维数据来说,我们找的就是一个二维平面作为边界,将这些点切割开来:

SVM还可以将数据映射到高维空间,使得很多非线性分类也可以实现。通过选择适当的核函数,我们就能实现高维空间的分类!这使得很多难划分边界的低维数据也可以高精度分类,这正是SVM强大之处。

下面以高慧璇的《应用多元统计分析》一书中的例题5.1.1为例,使用Python的sklearn库用SVM方法对样品进行判别。

在此我将例题的数据保存在csv文件中:

代码:

输出的结果:

如果觉得本文有用,请点赞、转发、打赏。您的支持是我买咖啡的动力!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180606G21ZUA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券