小白入门最简单的机器学习算法
2022/7/9 来源:不详这是菜鸟学Python的第篇原创文章
阅读本文大概需要3分钟
菜鸟独白上一篇(菜鸟学机器学习启航篇)对机器学习做了初步的介绍,机器学习的算法有很多,小白开始学习的时候,往往会被弄晕。有没有比较简单适合小白入手的算法呢~~当然有的,今天我们从最最简单的机器学习算法kNN入手,慢慢的通过一些简单的例子来理解机器学习。
1.挑兵器
1).语言
机器学习的文章,我主要以Python3为主,当然有的时候会穿插Python2.因为我一直是Py2/3混用的,而且Py2有点恋恋不舍,毕竟用了好多年了,一般会针对不同的项目用不同的语言.
2).开发工具
Python开发的工具非常多,前面入门上手篇我介绍过一些(入门篇我写了60几篇值得收藏
菜鸟学Python),机器学习我主要用Jupyternotebook非常方便,其实做数据分析我也喜欢用它(爬虫,数据分析我写了40几篇),但是爬虫一般我会用Pycharm去爬数据。
3).主要的库
机器学习框架我以sklearn为主,当然pandas和numpy也都是必备的!有同学会问这些库怎么下载啊?你可以用pip安装,也可以直接下载anaconda这个神器,非常方便,一下子把机器学习,数据分析要的库全部安装了,省的你一个一个下载.
2.挑个最简单的数据集
工欲善其事,必先利其器。挑完了称手兵器,准备工作都做好了,那么开始看数据集了.
一开始上手的时候,切记不能太难,欲速不达则不达。选来选去,我还是觉得最经典的数据集irsi(鸢尾花)比较合适,亮点如下:
1).数据集非常小巧
直接内置在sklearn库里面,不用我们再去网站上下载了,行的数据,适合上手
2).数据比较干净
因为sklearn里面的数据都是经过清洗的,现实里的大部分数据都是未清洗的,其实机器学习里面有一大部分的时间是清洗数据,对特征值进行处理.
3).数据集长啥样
鸢尾花是一个非常有趣的数据集,一般一朵花有3部分组成:有花萼、花瓣和花蕊三个部分,花萼就是绿色的那部分在最外边,然后是花瓣,最里面是花蕊.
这里我通过采集花萼和花瓣的长宽,来对数据进行分类。一共有朵花,分成了3类花:
1).Irissetosa
2).Irisversicolor
3).Irisvirginica
是不是蛮漂亮的,下我们来具体看一下数据集.
4).导入数据集
导入相应的库和sklean里面的iris数据集,它是一个大的字典里面有花的数据(4个维度的特征值,标签值,标签名,表述,特征名字)
构建iris数据集,把数据转换成pandas的DataFrame看一下,我们随机抽5行看一下:
发现第一行花萼的长度是5.8/2.8,花瓣5.1/2.4,那这样的花就是virginica
3.挑算法-kNN邻近算法
1).好万事具备,我们可以开始愉快的玩耍算法吧
用玩的心态去学Python,好比你玩乐高积木,你就会乐此不疲了.今天我们用kNN算法来训练数据,一般的机器学习流程大致如下:
获取你的数据集,观察你的数据集,进行清洗和特征值选择,并划分训练和测试集的数据
选择合适的机器学习的模型
训练数据
测试测试集的数据
看准确率得分
最后模型调整参数,降维等,重复上面的步骤
2).什么是kNN算法
kNN是k-NearestNeighbors的简称,我觉得是机器学习里面最简单的算法.它的核心思想就是,要确定测试样本属于哪一类
就寻找所有训练样本中与该测试样本“距离”最近的前K个样本,然后看这K个样本大部分属于哪一类,那么就认为这个测试样本也属于哪一类。
简单的说就是让最相似的K个样本来投票决定。
举例比如有一个身高,体重,是否正常的3个维度的数据集:
2).横坐标是身高,纵坐标体重,蓝色表示正常,红色表示偏胖或者偏瘦
如果我们有个老王他是cm,85kg,那么计算这个点跟周围所有点的距离进行计算,看最近的距离为k=1的是谁,发现是/90这个点,那么我们就认为老王和距离他最近的点是一类人,把他划分为胖的
如果我们有个老李他是cm,65kg,同理计算距离为k=1的点是谁,发现是/69这个点,那么我们就认为老李和距离他最近的点是一类人,把他划分为正常的
是不是很简单啊,我们上面假设是在距离为1,也就是k=1的情况下的分类,有同学会问,具体k应该怎么设置,如果k大一点比如3,那么有3个样本都跟他很近,而这3个样本的分类又不一致,应该如何划分呢,好下面我们开始真正探索iris这个数据集,然后回答问题.
4.用kNN训练iris数据集
1).划分数据集
一般我们拿到一个数据集都会进行划分,挑一部分为训练集,一部分为测试集.训练集主要用来训练模型,就是给算法喂数据,让它学习数据;测试集主要是验证我们的模型
我们把朵花,分成两大阵营:朵的训练集和38朵的测试集
有同学说这个大写的X,小写的y是什么鬼,为啥要这样命名;这是一个约定,一般把数据集以X打头,标签以小写的y打头。就好像pandas我们一般喜欢写成pd
2).选择模型算法,进行训练
kNN算法有分类和回归,今天我们讲的是分类的例子.还记得上面的胖瘦的分类吗,就是一个典型的分类问题.鸢尾花也有分类问题,我们来看一下到底是如何机器如何学习的:
首先我们选择knn分类器
然后设置k=1,距离为1
接着训练数据集
最后预测数据结果
哇,原理机器学习这么简单,就这几步。先不要得意,后面还有很多工作要做呢,我们接着看
3).看一下预测准确率
knn算法在我们喂了一堆朵花的训练集数据之后,变得智能了,可以帮我们预测测试集里面38朵花的分类标签了,感觉很好,到底准确率多多高呢,靠不靠谱呢:
准确率有97.36%,哇非常高哈!厉害,厉害!
4).调整一下参数看看
刚才我们是选的k=1,也就是找距离最近的为1的分类,如果我们k变化和调整训练和测试集的比例,准确率会怎么样:
k=1,s=0.1,score=1.0k=2,s=0.1,score=0.k=3,s=0.1,score=1.0k=4,s=0.1,score=1.0k=5,s=0.1,score=1.0k=1,s=0.2,score=1.0k=2,s=0.2,score=0.k=3,s=0.2,score=0.k=4,s=0.2,score=1.0k=5,s=0.2,score=0.k=1,s=0.3,score=0.k=2,s=0.3,score=0.k=3,s=0.3,score=0.k=4,s=0.3,score=0.k=5,s=0.3,score=0.k=1,s=0.4,score=0.k=2,s=0.4,score=0.8833k=3,s=0.4,score=0.k=4,s=0.4,score=0.9k=5,s=0.4,score=0.95k=1,s=0.5,score=0.9066k=2,s=0.5,score=0.8333k=3,s=0.5,score=0.k=4,s=0.5,score=0.92k=5,s=0.5,score=0.96
发现s的值越小,也就是说训练的数据越多,算法的准确率越高.如果训练的数据小了,k值变大准确率也会高很多.
5).预测数据
我们挑一个准确率最高的分类器模型,就可以预测数据了,
完全正确,随着人工智能的深入发展,未来机器学习的数据越来越多,会变的非常聪明,这就是为啥AlphaGo能这么打败那么多围棋高手的原因,不过还好机器不懂情感~~
结论:
好了,今天的机器学习入门第一篇就讲到这里,knn算法是不是很简单,其实knn的效果还是蛮好的!如有什么问题,欢迎大家留言讨论。我们期待下一篇更精彩!
长按