知行编程网知行编程网  2022-03-11 07:00 知行编程网 隐藏边栏 |   抢沙发  4 
文章评分 0 次,平均分 0.0

这是菜鸟学Python的第125篇原创文章

阅读本文大概需要3分钟


菜鸟独白

上一篇(菜鸟学机器学习启航篇)对机器学习做了初步的介绍,机器学习的算法有很多,小白开始学习的时候,往往会被弄晕。有没有比较简单适合小白入手的算法呢~~当然有的,今天我们从最最简单的机器学习算法kNN入手,慢慢的通过一些简单的例子来理解机器学习。



1.挑兵器

1).语言

机器学习的文章,我主要以Python3为主,当然有的时候会穿插Python2.因为我一直是Py2/3混用的,而且Py2有点恋恋不舍,毕竟用了好多年了,一般会针对不同的项目用不同的语言.


2).开发工具

Python开发的工具非常多,前面入门上手篇我介绍过一些(入门篇我写了60几篇值得收藏|菜鸟学Python【入门文章大全】),机器学习我主要用Jupyter notebook非常方便,其实做数据分析我也喜欢用它(爬虫,数据分析我写了40几篇),但是爬虫一般我会用Pycharm去爬数据。


3).主要的库

机器学习框架我以sklearn为主,当然pandas和numpy也都是必备的!有同学会问这些库怎么下载啊? 你可以用pip安装,也可以直接下载anaconda这个神器,非常方便,一下子把机器学习,数据分析要的库全部安装了,省的你一个一个下载.



2.挑个最简单的数据集

工欲善其事,必先利其器。挑完了称手兵器,准备工作都做好了,那么开始看数据集了.


一开始上手的时候,切记不能太难,欲速不达则不达。选来选去,我还是觉得最经典的数据集irsi(鸢尾花)比较合适,亮点如下:

1).数据集非常小巧

直接内置在sklearn库里面,不用我们再去网站上下载了,150行的数据,适合上手


2).数据比较干净

因为sklearn里面的数据都是经过清洗的,现实里的大部分数据都是未清洗的,其实机器学习里面有一大部分的时间是清洗数据,对特征值进行处理.


3).数据集长啥样

鸢尾花是一个非常有趣的数据集,一般一朵花有3部分组成:有花萼、花瓣和花蕊三个部分,花萼就是绿色的那部分在最外边,然后是花瓣,最里面是花蕊.

这里我通过采集花萼和花瓣的长宽,来对数据进行分类。一共有150朵花,分成了3类花:

1).Iris setosa

小白入门最简单的机器学习算法


2).Iris versicolor

小白入门最简单的机器学习算法


3).Iris virginica

小白入门最简单的机器学习算法


是不是蛮漂亮的,下我们来具体看一下数据集.


4).导入数据集

导入相应的库和sklean里面的iris数据集,它是一个大的字典里面有花的数据(4个维度的特征值,标签值,标签名,表述,特征名字)

小白入门最简单的机器学习算法


构建iris数据集,把数据转换成pandas的DataFrame看一下,我们随机抽5行看一下:

小白入门最简单的机器学习算法

发现第一行花萼的长度是5.8/2.8,花瓣5.1/2.4,那这样的花就是virginica


3.挑算法-kNN邻近算法

1).好万事具备,我们可以开始愉快的玩耍算法吧

用玩的心态去学Python,好比你玩乐高积木,你就会乐此不疲了.今天我们用kNN算法来训练数据,一般的机器学习流程大致如下:


  1. 获取你的数据集,观察你的数据集,进行清洗和特征值选择,并划分训练和测试集的数据

  2. 选择合适的机器学习的模型

  3. 训练数据

  4. 测试测试集的数据

  5. 看准确率得分

  6. 最后模型调整参数,降维等,重复上面的步骤



2).什么是kNN算法

kNN是k-Nearest Neighbors的简称,我觉得是机器学习里面最简单的算法.它的核心思想就是,要确定测试样本属于哪一类


就寻找所有训练样本中与该测试样本“距离”最近的前K个样本,然后看这K个样本大部分属于哪一类,那么就认为这个测试样本也属于哪一类。


简单的说就是让最相似的K个样本来投票决定。


举例比如有一个身高,体重,是否正常的3个维度的数据集:

小白入门最简单的机器学习算法

2).横坐标是身高,纵坐标体重,蓝色表示正常,红色表示偏胖或者偏瘦


如果我们有个老王他是160cm,85kg,那么计算这个点跟周围所有点的距离进行计算,看最近的距离为k=1的是谁,发现是165/90这个点,那么我们就认为老王和距离他最近的点是一类人,把他划分为胖的


如果我们有个老李他是170cm,65kg,同理计算距离为k=1的点是谁,发现是170/69这个点,那么我们就认为老李和距离他最近的点是一类人,把他划分为正常的

小白入门最简单的机器学习算法


是不是很简单啊,我们上面假设是在距离为1,也就是k=1的情况下的分类,有同学会问,具体k应该怎么设置,如果k大一点比如3,那么有3个样本都跟他很近,而这3个样本的分类又不一致,应该如何划分呢,好下面我们开始真正探索iris这个数据集,然后回答问题.


4. 用kNN训练iris数据集

1).划分数据集

一般我们拿到一个数据集都会进行划分,挑一部分为训练集,一部分为测试集.训练集主要用来训练模型,就是给算法喂数据,让它学习数据;测试集主要是验证我们的模型

小白入门最简单的机器学习算法

我们把150朵花,分成两大阵营:112朵的训练集和38朵的测试集


有同学说这个大写的X, 小写的y是什么鬼,为啥要这样命名;这是一个约定,一般把数据集以X打头,标签以小写的y打头。就好像pandas我们一般喜欢写成pd



2).选择模型算法,进行训练

kNN算法有分类和回归,今天我们讲的是分类的例子.还记得上面的胖瘦的分类吗,就是一个典型的分类问题.鸢尾花也有分类问题,我们来看一下到底是如何机器如何学习的:

小白入门最简单的机器学习算法

  • 首先我们选择knn分类器

  • 然后设置k=1,距离为1

  • 接着训练数据集

  • 最后预测数据结果


哇,原理机器学习这么简单,就这几步。先不要得意,后面还有很多工作要做呢,我们接着看


3).看一下预测准确率

knn算法在我们喂了一堆112朵花的训练集数据之后,变得智能了,可以帮我们预测测试集里面38朵花的分类标签了,感觉很好,到底准确率多多高呢,靠不靠谱呢:

小白入门最简单的机器学习算法

 准确率有97.36%,哇非常高哈!厉害,厉害!


4).调整一下参数看看

刚才我们是选的k=1,也就是找距离最近的为1的分类,如果我们k变化和 调整训练和测试集的比例,准确率会怎么样:

小白入门最简单的机器学习算法

>>

<span style="color: rgb(255, 41, 65);">k=1,s=0.1,score=1.0<br  /></span><span style=";">k=2,s=0.1,score=0.9333333333333333<br  /></span><span style="color: rgb(255, 41, 65);">k=3,s=0.1,score=1.0</span><span style=";"><br  /></span><span style="color: rgb(255, 41, 65);">k=4,s=0.1,score=1.0 k=5,s=0.1,score=1.0 k=1,s=0.2,score=1.0<br  /></span><span style=";">k=2,s=0.2,score=0.9666666666666667</span><span style="color: rgb(255, 41, 65);"><br  /></span>k=3,s=0.2,score=0.9666666666666667<br  /><span style="color: rgb(255, 41, 65);">k=4,s=0.2,score=1.0<br  /></span><span style=";">k=5,s=0.2,score=0.9666666666666667</span><span style="color: rgb(255, 41, 65);"><br  /></span>k=1,s=0.3,score=0.9777777777777777 k=2,s=0.3,score=0.9777777777777777 k=3,s=0.3,score=0.9777777777777777 k=4,s=0.3,score=0.9777777777777777 k=5,s=0.3,score=0.9777777777777777 k=1,s=0.4,score=0.9166666666666666 k=2,s=0.4,score=0.8833333333333333 k=3,s=0.4,score=0.9333333333333333 k=4,s=0.4,score=0.9 k=5,s=0.4,score=0.95 k=1,s=0.5,score=0.9066666666666666 k=2,s=0.5,score=0.8933333333333333 k=3,s=0.5,score=0.9333333333333333 k=4,s=0.5,score=0.92 k=5,s=0.5,score=0.96

发现s的值越小,也就是说训练的数据越多,算法的准确率越高.如果训练的数据小了,k值变大准确率也会高很多.


5).预测数据

我们挑一个准确率最高的分类器模型,就可以预测数据了,

小白入门最简单的机器学习算法

完全正确,随着人工智能的深入发展,未来机器学习的数据越来越多,会变的非常聪明,这就是为啥AlphaGo能这么打败那么多围棋高手的原因,不过还好机器不懂情感~~


结论:


好了,今天的机器学习入门第一篇就讲到这里,knn算法是不是很简单,其实knn的效果还是蛮好的!如有什么问题,欢迎大家留言讨论。我们期待下一篇更精彩!


长按二维码,加入小密圈

更多私密技巧干货,尽在小密圈


 推荐阅读:

双十二来了,我爬取了淘宝上所有的羽绒服|想找到最大折扣

Python年薪最高有50w|探秘全国近1600个Python岗位数据分析

学好Python薪水有多少|我爬取了所有的Python职位

一份值得了解的Google Python风格规范指南

南京楼市火吗|16000套二手房数据分析

分析9000部电影|一个简单的电影推荐系统

厉害了!实战爬取全网5000部手机|上篇




本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享