Python 《机器学习实战》学习笔记(一)——机器学习基础
2017-11-15 22:14
295 查看
《机器学习实战》共分为四个部分:
第一部分——分类
共七章,第一章介绍机器学习的基础;第二章讲述最简单的分类算法:k-近邻算法;第三章引入决策树;第四章将讨论如何使用概率论建立分类器;第五章讨论Logistic回归;第六章介绍支持向量机;第七章介绍元算法:AdaBoost。
第二部分——利用回归预测数值类型数
介绍了预测数值型数据——回归和树回归
第三部分——无监督学习
第四部分——其他工具
前两部分是监督学习(supervised learning),第三部分是无监督学习。
两种类型的目标变量:
标称型——目标变量的结果只在优先目标集中取值,如真与假、动物分类集合{爬行类、鱼类、扑入类、两栖类、植物、真菌}
数值型——目标变量可以从无限的数值集合中取值,如0.100、42.001、1000.743等(数值型目标变量主要用于回归分析)
机器学习的主要任务就是分类。使用某个机器学习算法进行分类,首先需要做的事算法训练,即学习如何分类。为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。
分类和回归属于监督学习,因为这类算法必须知道预测什么,即目标变量的分类信息。
无监督学习——数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
用于执行分类、回归、聚类和密度估计得机器学习算法:
监督学习的用途
1. k-近邻算法——先行回归
2. 朴素贝叶斯算法——局部加权线性回归
3. 支持向量机——Ridge回归
4. 决策树——Lasso最小回归系数估计
无监督学习的用途
1.K-均值——最大期望算法
2.DBSCAN——Parzen窗设计
使用机器学习算法的目的,想要算法完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;
需要分析或手机的数据是什么。
如果不想预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。
其次需要考虑的事数据问题。主要了解数据的特性有:特征值是离散型变量还是连续性变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见的如同海底捞针),等等。
一般来着发现最好算法的关键环节是反复试错的迭代过程。
通过不同方法收集样本数据;
准备输入数据
保证数据格式符合要求,为机器学习算法准备特定的数据格式;
分析输入数据
人工分析以前的到的数据(这一步主要是确保数据集中没有垃圾数据);
训练算法
机器学习算法从这一步才是这正开始学习
测试算法
使用算法
2.易于操作纯文本文件
选择Python实现机器学习算法的编程语言,是因为它具有其他编程语言不具备的优势,如易于理解、丰富的函数库(尤其是矩阵操作——NumPy库函数)、活跃的开发者社区等。
可执行伪代码
Python具有清晰地语法结构,也称作可执行伪代码。Python语言处理和操作文本非常简单,非常易于处理非数值型数据。
Python比较流行
Python语言使用广泛,代码范例也很多,便于读者快速学习和掌握。在科学和金融领域,Python余压得到了广泛应用。Python的科学工具可以与绘图工具Matplotlib协同工作。Python开发环境还提供了交互式shell环境,允许用户开发程序是查看和检测程序内容。
NumPy函数库是Python开发环境的一个独立模块,而且大多数Python发行版没有默认安装Numpy函数库,因此在安装Python之后必须单独安装NumPy函数库。
WIN10 64bit python2.7 安装 numpy scipy matplotlib
Windows10可以通过点击菜单栏里的IDLE(Python Guy)进入Python shell开发环境,前提已成功安装了Python。
在Python shell开发环境中输入谢列命令:
上述命令将Numpy函数库的所有模块引入当前的命名空间。然后在Python shell开发环境中输入下述命名:
上述命令构造了一个4x4的随机数组,计算机不一样,生成的随机数也会不一样。
NumPy矩阵与数组的区别
NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组arry),都可以用于处理行列表示的数字元素。虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中NumPy函数库中的matrix与MATLAB中matriccs等价。
调用mat()函数可以将数组转化为矩阵,输入下述命令:
.I操作符实现了矩阵求逆的运算。
执行下面的命令存储逆矩阵:
接着执行矩阵乘法,得到矩阵与其逆矩阵相乘的结果:
结果应该是单位矩阵,除了对角线元素是1,4X4矩阵的其他元素应该全是0。实际输出结果略有不同,矩阵里还留下了许多非常小的元素,这是计算机处理误差产生的结果,输入下述命令,得到误差值:
函数eye(4)创建4X4的单位矩阵。
以上基本为第一部分的第一章,第一本分的前七章主要研究分类问题。学习机器学习算法,必须了解数据实例,每个数据实例由多个特征值组成。分类是基本的机器学习任务,它分析未分类的数据,以确定如何将其放入移植群组中。为了构建和训练分类器,必须先输入大量已知的数据,我们将这些数据成为训练样本集。
第一部分——分类
共七章,第一章介绍机器学习的基础;第二章讲述最简单的分类算法:k-近邻算法;第三章引入决策树;第四章将讨论如何使用概率论建立分类器;第五章讨论Logistic回归;第六章介绍支持向量机;第七章介绍元算法:AdaBoost。
第二部分——利用回归预测数值类型数
介绍了预测数值型数据——回归和树回归
第三部分——无监督学习
第四部分——其他工具
前两部分是监督学习(supervised learning),第三部分是无监督学习。
第一部分 分类
监督学习——只需要给定输入样本值,机器就可以从中推演处指定目标变量的可能结果。两种类型的目标变量:
标称型——目标变量的结果只在优先目标集中取值,如真与假、动物分类集合{爬行类、鱼类、扑入类、两栖类、植物、真菌}
数值型——目标变量可以从无限的数值集合中取值,如0.100、42.001、1000.743等(数值型目标变量主要用于回归分析)
第一章 机器学习的基础
1.1 何谓机器学习
单地说,机器学习就是把无序的数据转换成有用的信息。机器学习的主要任务就是分类。使用某个机器学习算法进行分类,首先需要做的事算法训练,即学习如何分类。为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。
1.3机器学习的主要任务
它的主要任务是将实例数据划分到合适的分类中。另一个任务是回归——主要用于预测数值型数据。分类和回归属于监督学习,因为这类算法必须知道预测什么,即目标变量的分类信息。
无监督学习——数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
用于执行分类、回归、聚类和密度估计得机器学习算法:
监督学习的用途
1. k-近邻算法——先行回归
2. 朴素贝叶斯算法——局部加权线性回归
3. 支持向量机——Ridge回归
4. 决策树——Lasso最小回归系数估计
无监督学习的用途
1.K-均值——最大期望算法
2.DBSCAN——Parzen窗设计
1.4如何选择合适的算法
选择实际可用的算法,必须考虑下面两个问题:使用机器学习算法的目的,想要算法完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;
需要分析或手机的数据是什么。
如果不想预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。
其次需要考虑的事数据问题。主要了解数据的特性有:特征值是离散型变量还是连续性变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见的如同海底捞针),等等。
一般来着发现最好算法的关键环节是反复试错的迭代过程。
1.5 开发机器学习应用程序的步骤
收集数据:通过不同方法收集样本数据;
准备输入数据
保证数据格式符合要求,为机器学习算法准备特定的数据格式;
分析输入数据
人工分析以前的到的数据(这一步主要是确保数据集中没有垃圾数据);
训练算法
机器学习算法从这一步才是这正开始学习
测试算法
使用算法
1.6 Python语言的优势
1.Python的语法清晰2.易于操作纯文本文件
选择Python实现机器学习算法的编程语言,是因为它具有其他编程语言不具备的优势,如易于理解、丰富的函数库(尤其是矩阵操作——NumPy库函数)、活跃的开发者社区等。
可执行伪代码
Python具有清晰地语法结构,也称作可执行伪代码。Python语言处理和操作文本非常简单,非常易于处理非数值型数据。
Python比较流行
Python语言使用广泛,代码范例也很多,便于读者快速学习和掌握。在科学和金融领域,Python余压得到了广泛应用。Python的科学工具可以与绘图工具Matplotlib协同工作。Python开发环境还提供了交互式shell环境,允许用户开发程序是查看和检测程序内容。
1.7 NumPy函数库基础
机器学习算法涉及很多线性代数只是,使用Python语言构造机器学习应用时,会经常使用NumPy函数库。NumPy函数库是Python开发环境的一个独立模块,而且大多数Python发行版没有默认安装Numpy函数库,因此在安装Python之后必须单独安装NumPy函数库。
WIN10 64bit python2.7 安装 numpy scipy matplotlib
Windows10可以通过点击菜单栏里的IDLE(Python Guy)进入Python shell开发环境,前提已成功安装了Python。
在Python shell开发环境中输入谢列命令:
>>> from numpy import *
上述命令将Numpy函数库的所有模块引入当前的命名空间。然后在Python shell开发环境中输入下述命名:
>>> random.rand(4,4) array([[ 0.78314482, 0.7239554 , 0.3108891 , 0.51277561], [ 0.78408743, 0.37782528, 0.23968518, 0.85503523], [ 0.4666761 , 0.38926782, 0.75106318, 0.06438148], [ 0.59958743, 0.35981518, 0.16095452, 0.84342553]])
上述命令构造了一个4x4的随机数组,计算机不一样,生成的随机数也会不一样。
NumPy矩阵与数组的区别
NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组arry),都可以用于处理行列表示的数字元素。虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中NumPy函数库中的matrix与MATLAB中matriccs等价。
调用mat()函数可以将数组转化为矩阵,输入下述命令:
>>> randMat = mat(random.rand(4,4)) >>> randMat.I matrix([[ 0.98017444, 0.21122576, -2.36904023, 2.28842775], [ 0.82414424, -2.75841087, 0.27908233, 2.61223953], [-0.9695299 , 0.97877418, 0.48761212, 0.23723141], [-0.18363084, 2.07333355, 1.715797 , -4.37572914]])
.I操作符实现了矩阵求逆的运算。
执行下面的命令存储逆矩阵:
>>> invRandMat = randMat.I
接着执行矩阵乘法,得到矩阵与其逆矩阵相乘的结果:
>>> randMat*invRandMat matrix([[ 1.00000000e+00, -1.12760617e-17, -3.63418003e-16, 2.52530441e-16], [ -5.86254723e-17, 1.00000000e+00, -2.92120779e-17, -3.70375431e-17], [ -3.75560507e-17, -9.71493500e-17, 1.00000000e+00, -5.85783766e-17], [ -5.59998459e-17, -4.54482523e-17, -5.99937790e-17, 1.00000000e+00]])
结果应该是单位矩阵,除了对角线元素是1,4X4矩阵的其他元素应该全是0。实际输出结果略有不同,矩阵里还留下了许多非常小的元素,这是计算机处理误差产生的结果,输入下述命令,得到误差值:
>>> myBye = randMat*invRandMat >>> myBye - eye(4) matrix([[ 0.00000000e+00, -1.12760617e-17, -3.63418003e-16, 2.52530441e-16], [ -5.86254723e-17, 0.00000000e+00, -2.92120779e-17, -3.70375431e-17], [ -3.75560507e-17, -9.71493500e-17, 0.00000000e+00, -5.85783766e-17], [ -5.59998459e-17, -4.54482523e-17, -5.99937790e-17, -1.11022302e-16]])
函数eye(4)创建4X4的单位矩阵。
以上基本为第一部分的第一章,第一本分的前七章主要研究分类问题。学习机器学习算法,必须了解数据实例,每个数据实例由多个特征值组成。分类是基本的机器学习任务,它分析未分类的数据,以确定如何将其放入移植群组中。为了构建和训练分类器,必须先输入大量已知的数据,我们将这些数据成为训练样本集。
参考文献
《机器学习实战》相关文章推荐
- python3.5《机器学习实战》学习笔记(五):决策树算法实战之预测隐形眼镜类型
- 机器学习之深入理解神经网络理论基础、BP算法及其Python实现
- 从变量到封装:一文带你为机器学习打下坚实的Python基础 By 机器之心2017年10月13日 10:43 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要的且常
- 《机器学习实战》(一)机器学习基础
- 机器学习---笔记----Python基础
- 【Numpy】python机器学习包Numpy基础知识学习
- 机器学习实战(第一篇)-机器学习基础
- 1.2机器学习基础下--python深度机器学习
- 《机器学习实战》第一章 – 机器学习基础
- python 机器学习基础环境的安装搭建
- 《Python学习手册》学习笔记(26)之第26章类代码编写基础(关键词:编程语言/Python/OOP/面向对象/类)
- python基础 - 机器学习笔记
- 《机器学习实战》笔记一——机器学习基础
- Python机器学习基础篇之python基础篇
- python机器学习日志.02——Python编程的基础知识
- 【备忘】2017年最新北风网零基础学习机器学习(Python语言、算法、Numpy库、MatplotLib)视频教程)
- 机器学习(4):python基础及fft、svd、股票k线图、分形等实践
- 从变量到封装:一文带你为机器学习打下坚实的Python基础
- python3.5《机器学习实战》学习笔记(四):决策树算法
- Python机器学习(一)--Numpy基础