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

这是菜鸟学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算法来训练数据,一般的机器学习流程大致如下:

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

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

训练数据

测试测试集的数据

看准确率得分

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

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变化和 调整训练和测试集的比例,准确率会怎么样:

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

5).预测数据

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

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

结论:

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

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

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171221B0JOTM00?refer=cp_1026

扫码关注云+社区