前言
  之前在百度上搜索过许多机器学习的资料,发现关于机器学习的视频资料比较少,而较为有名的是斯坦福大学Andrew Ng教授的公开课。出于个人兴趣原因,虽然是java工程师,但是对机器学习和人工智能方向非常感兴趣,于是利用还没有正式上班的业余时间来慢慢积累学习一下,语言采用的是Python。 
   经资料查询,发现有一本比较适合Python实战机器学习的书—-《机器学习实战》(Machine Learning in Action),2013年出版于图灵,作者:Peter Harrington,从今天开始慢慢积累关于机器学习的知识,同时记录机器学习知识的推进笔记。
关于本书的结构
| 书的部分由四大部分15章和4个附录组成。 
    |——第一部分:分类 
    |——第二部分:利用回归预测数值型数据 
    |——第三部分:无监督学习 
    |——第四部分:其他工具 
 第一部分和第二部分主要探讨了监督学习。 
 话不多说,下面开始记录正文笔记。
Part1 分类 day01
0x001 机器学习基础
1.何谓机器学习?
除却一些无关的紧要情况,人们很难直接从原始数据本身获取所需信息。简单的说,机器学习就是把无序的数据转成为有用的信息。
2.机器学习在日常生活中的应用?
人脸识别、手写数字识别、垃圾邮件过滤、等等。。。。。
3.关键术语
监督学习:在监督学习的过程中,我们只需要给定输入样本集,机器就可以从中推演出目标变量的可能结果。而监督学习中一般使用两种类型的目标变量:标称型和数值型。标称型目标变量的结果只有在有限目标集中取值,例如真与假,动物分类集合{爬行类,鱼类,两栖类}。。。数值型目标变量的结果可以从无限的数值集合中取值,如0.1、42、1、-1等等。
下面有一个表,基于四种特征的鸟物种分类表
表1-基于四种特征的鸟物种分类表
体重  | 翼展  | 脚蹼  | 后背颜色  | 种属  | 
1000  | 125  | 无  | 棕色  | 红尾鹊  | 
3000  | 200  | 无  | 灰  | 鹭鹰  | 
……  | ……  | ……  | ……  | ……  | 
通过上表的数据,我们采集到的前四个值称为特征,也叫属性,特征下面的每一行数据称之为特征的实例。而这组数据的目的是让机器学习来进行判断鸟的种类,我们通过前四种特征(体重、翼展、脚蹼 、后背颜色),来判断鸟的种类,此处的种类称之为目标变量,也就是通过我们机器学习算法的预测结果,我们将这个过程叫做分类。 
 有了这样的例子后,最终决定使用某个机器学习算法进行分类,首先要做的是算法训练,即学习如何分类。我们采集了已分类的大部分数据,就像上表中一样,已经是得知了目标变量的结果,将这部分已分类的数据称之为训练集。而上表的2个训练样本组成了一个训练集,每个训练样本中包括了4个特征和一个目标变量。 
 注:特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完后输入测试样本。输入测试样本时并不提供测试样本的目标变量,让程序决定样本属于哪种类别。比较测试样本预测的目标变量和实际样本类别之间的差别,就可以得出算法的实际精确度。
0x002 机器学习的主要任务
上面的例子介绍了机器学习如何解决分类问题,它的主要任务是将实例数据划分到合适的分类中。机器学习的另一项任务是回归,它主要用于预测数值型的数据。回归例子——–数据拟合曲线:给定数据点的最优拟合曲线。分类和回归属于监督学习,之所以称之为监督学习,是因为这类算法必须知道预测什么,即目标变量的分类信息。下面列举醋了机器学习的主要任务,以及解决相应问题的算法。
表2-用于执行分类、回归、聚类、和密度估计的机器学习算法
————————————————————–监督学习的用途:———————————————————————-  | |
k-邻近算法  | 线性回归  | 
朴素贝叶斯算法  | 局部加权线性回归  | 
支持向量机  | Ridge回归  | 
决策树  | Lasso最小回归系数估计  | 
————————————————————-无监督学习的用途:——————————————————————–  | |
K-均值  | 最大期望算法  | 
DBSCAN  | Parzen窗设计  | 
0x003 开发机器学习应用程序的步骤
1.收集数据:例如制作爬虫采集网站上的数据、从RSS反馈或者API中得到信息,或者使用公开可用的数据源。
2.准备输入数据:得到数据后,还需确保数据格式符合要求,本书采用的格式是Python语言的List。
3.分析输入数据:此步骤主要是人工分析以前得到的数据。
4.训练算法:机器学习算法从这一部才算开始真正的学习。将前两步得到的格式化数据输入到算法,从中抽取知识和信息。若使用无监督学习算法,由于不存在目标变量值,也不需要训练算法,所有与算法相关的内容都集中在第5步。
5.测试算法:为了评估算法,必须测试算法工作的效果。对于监督学习,需已知用于评估算法的目标变量值;对于无监督学习,需用其他评估算法来检测算法的成功率。
6.使用算法:将机器学习算法转化为应用程序,执行实际任务,以检验上述步骤时候可以在实际环境中正常工作。
0x004 基础总结
上面的笔记记录了分类中的基础术语的概念:
监督学习:
-----训练样本,训练集
|
-----特征,特征的实例
-----测试数据,训练数据
书中采用的版本是Python2.7,因为在2013年,但是我在后面做笔记的编码中会采用Python3.6,因为现在已经2017年了,大部分的库已经稳定的移动过来了,所以我选择Python3.6,若中间遇到一些坑,可以自行解决增加以下阅历。
                










