Python机器学习入门(1)

趁着前两天世界读书日促销把一直放在购物车里的书清空了,其中就有《Python机器学习基础教程》。今天下午有点时间就读了第一章导论部分。以一个关于花的品种的例子介绍了机器学习的大致流程。接下来我凭自己的理解大概记录一下(表述极其不准确)。

首先机器学习分为了监督学习和无监督学习。导论部分的例子是一个典型的监督学习。监督学习会告诉算法一些数据和结果,比如告诉四个关于花瓣长度的数据,然后再告诉算法这些数据所代表的花。这样经过一定地训练后,算法就能够在你给出一组全新数据时给你反馈预测结果。无监督学习就只告诉数据不告诉结果,过程会更加复杂一些。

本书使用的是scikit-learn这个库,使用anaconda基本只需要conda install scikit-learn就好了,其他诸如pandas这些库都已经内置了。

接下来就是第一个项目,鸢尾花分类,使用的数据是这个库内置的类似于教学数据一样的东西。首先导入数据,通过一些命令查看数据。其实我感觉在做自己的项目的时候将数据下载下来自己就知道数据是什么样子了,只需要确认一下数据的类型和形式就好。接下来就是衡量一下模型是否能成功,通过画散点图等一些骚操作就能把数据表现成如下的形式。虽然代码只有两行,但是里面的参数我是不知道是啥意思的。

图像把4个特征两两组合作图,可以看出区分度还是很高的。

接下来就是找模型,scikit-learn这个库内置了许多算法,这部分作者会在第二章开始介绍。这个导入项目使用了K近邻算法,就是在你给出一组数据之后,算法在加载的数据集里面找到最相似的那个数据,然后把结果赋给新给的数据。至于有几个邻居之类的问题就不是这一章讨论的。

接下来就是把数据分成训练集和测试集,按照经验来说一般是3:1的比例,75%拿来训练,25%拿来测试。scikit-learn专门有一个函数来做这个事情。之后就是训练和作出预测,这个挺简单的,两三行代码就完成了。

最后是评估模型,即是评估预测结果和我们已知结果之间的差距,可以用numpy的mean函数也可以用scikit-learn的score函数。本次测试的结果是0.97,准确度达到了97%,看起来很好了。

第一次接触机器学习,前面有天看了一下Google出的基于自己家的tensorflow的机器学习入门教程,机翻的教程还是比较吃力,找本书来自己照着敲更靠谱些。