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

支持向量机及python实现(二)

Hi,小伙伴们,大家好!在上篇文章中,姬莫君(为啥是“姬”?因为据砖家考证,在下祖上是武王姬发的~~子民)用一段可歌可泣的杨过勇闯情花阵解救心上人的故事(在这里,姬莫君对金大侠的去世表示悲痛,“沧海一声笑,滔滔两岸潮~~”)来讲述SVM的基本原理:

(1)数据在线性可分情况下,找到一个最优的TRICK(方法);

(2)数据在线性不可分(非线性)情况下,将平面上的点映射到高维空间,然后找到最优的超平面。杨大侠的剑痕和树叶就是我们需要找的最优TRICK(方法)和超平面。

图1 杨过大侠与他的剑

今天,姬莫君将会通过一个小实例来给大家讲讲SVM算法的用处。由于,SVM的理论非常复杂,涉及很多诸如拉格朗日对偶性、KKT条件等复杂知识点(有兴趣小伙伴可以加入我们交流群哦~),为了节省大家的脂肪时间,简化思考难度,接下来,我们就从一朵兰艳艳的花儿开始唱讲起吧~~

鸢(读“yuān”)尾花是一种兰花,是鸢尾属植物,是对一族草本开花植物的统称,是法国国花,香气淡雅,可以调制香水。“鸢尾”之名来源于希腊语,意思是彩虹。它表明天上彩虹的颜色尽可在这个属的花朵颜色中看到。鸢尾花常用以象征爱情和友谊,感觉就是如田间里不惊艳的浪漫温馨,灰姑娘与青蛙王子的执著认真。

图2 鸢尾花

这种花很漂亮,非常符合法国浪漫风情,又名爱丽丝,姬莫君顿时想起了鱼香肉丝Jack和Rose,“夜夜梦中见你,梦中的你深情依旧,穿越重重阻隔,在梦中诉说爱将继续 ~~ My Heart Will Go On ”。

图3 Jack and Rose

好了,浪漫的话,我们攒起来,情人节那天一起说(一片顶六片,效果更好,利用率更高,This is知识点!),接下来说说本文用到的知识点:鸢尾花是由6个花瓣状的叶片构成的包膜,3个或6个雄蕊和由花蒂包着的子房组成,因此它会有很多种属性,我们通过花萼(sepal)和花瓣(petal)的长和宽,共四组数据,来区分三种鸢尾花:山鸢尾(Iris Setosa)、变色鸢尾(Iris Versicolor)和维吉尼亚鸢尾(Iris Virginica)。在python机器学习算法库sklearn中的datasets包含了鸢尾花的数据:

图4 鸢尾花数据集

上图展示了python库中部分鸢尾花的测试数据,即4列150行,代表四种属性和150个鸢尾花,也就是说每一行确定鸢尾花的类别。那么现在我们用这组数据做一个事情,将它们进行分类,比如我们可以对花萼(sepal)的宽度进行分类,当花萼(sepal)长度小于5.0属于山鸢尾,大于5.0,小于6.0属于变色鸢尾,大于6.0属于维吉尼亚鸢尾(注意:这里保持其他的属性均满足各自所属种类)。目标定了,那么怎么来实现呢,首先我们来举个栗子,有学校的地方就有考试,有考试的地方就有分数,有分数的地方就有等级划分,姬莫君在读书时候,被划为优等生(这话写出来,我自都信了!),那么老师是怎么划分优、良、差这三类学生呢?对不起,我问的很弱智,当然是分数啦!某次考试分数大于85分列为优等生,大于60小于85分的是良,小于60是差,也就是老师画好了线(相当于建立一个分类模型),你就被划分为不同的类别,姬莫君考了80分(相当于一个测试数据),那么我就被划为良这个类。为什么不把我划分优呢,因为我没过85这个线,不属于优这个类。这样的分类问题就是首先确定好分类器(老师画的线),然后再逐一比对某组数据属于那个类,属于监督性的机器学习。比较简单的就是分为两类(这里本来想简单写一些算法步骤,但是发现,简单的说不明白,想说的明白些,不简单,因此,用一句话概括,找到最优的一条线或者一个平面,让它们到各个分类点的距离满足你的目标,即求点与线之间距离或点与平面之间距离的最优值)。好了,说了这么多,姬莫君也觉得是时候该表演真正的技术了。

图5 插图1

问题简单描述:通过花萼(sepal)的宽度对鸢尾花进行分类,我们首先在python机器学习算法库sklearn中调取用于算法学习和训练的数据包datasets,将鸢尾花数据导出来并进行处理,分为训练集和测试集,然后分别进行模型训练和测试。不多说直接贴代码:

注意:此代码基于python3.0编写。我们运行上面代码可以得到下图:

图6 鸢尾花svm

针对上图作如下说明:横坐标是花萼长度训练数据的第一列,坐标是花萼宽度训练数据的第二列,图中浅蓝色的圆点和棕色的圆点是训练数据的散点,从图中可以看出将花分为两类(第三类由其他两个属性决定),紫色的圆点和黄色的圆点是测试数据的散点,我们可以看出,除了图中一个画红色圈圈的错误分类外,其他的数据均分类准确,说明此模型作为鸢尾花的分类器效果很理想,当然如果需要更加准确的结果,就需要大量的数据进行迭代训练。

好了本期内容就到这里了,欢迎大家在评论区留言或者来我们的三行科创交流群。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券