机器学习——python机器学习第2版笔记

python机器学习第二版笔记

  • 1 赋予计算机从数据中学习的能力
    • 1.1 构建把数据转换成知识的智能
    • 1.2 三种不同类型的机器学习
    • 1.3 基本术语与符号
    • 1.4 构建机器学习系统的路线图
    • 1.5 用python进行机学习
  • 2 训练简单的机器学习分类算法
    • 2.1 人工神经元——机器学习早期历史一瞥
    • 2.2 在python中实现感知器学习
    • 2.3 自适应神经元和学习收敛
  • 3 scikit-learn机器学习分类器一览
    • 3.1 选择分类算法
    • 3.2 了解scikit-learn软件库的第一步——训练感知器
    • 3.3 基于逻辑回归的分类概率建模
    • 3.4 支持向量机的最大余量分类
    • 3.5 用核支持向量机求解非线性问题
    • 3.6 决策树学习
    • 3.4 K-近邻——一种懒惰的学习算法
    • 3.8 小结
  • 4 构建良好的训练集——预处理
    • 4.1 处理缺失数据
    • 4.2 处理分类数据
    • 4.3 分裂数据集为独立的训练集和测试集
    • 4.4 把特征保持在同一尺度上
    • 4.5 选择有意义的特征
    • 4.6 用随机森林评估特征的重要性
  • 5. 通过降维压缩数据
    • 5.1 用主成分分析实现无监督降维
    • 5.2 基于线性判别分析的有监督数据压缩
    • 5.3 非线性映射的核主成分分析
  • 6. 模型评估和超参数调优的最佳实践
    • 6.1 用管道方法简化工作流
    • 6.2 使用k折交叉验证评估模型的性能
    • 6.3 用学习和验证曲线调试算法
    • 6.4 通过网格搜索为机器学习模型调优
    • 6.5 比较不同的性能评估指标
    • 6.6 处理类的不平衡问题
  • 7.综合不同模型的组合学习
    • 7.1 集成学习
    • 7.2 采用多数票机制的集成分类器
    • 7.3 套袋——基于导引样本构建分类器集成
    • 7.4 通过自适应增强来利用弱学习者
  • 8.应用机器学习于情感分析
    • 8.1 为文本处理预备好IMDb电影评论数据
    • 8.2 词袋模型介绍
    • 8.3 训练文档分类的逻辑回归模型
    • 8.4 处理更大的数据集——在线算法和核心学习
    • 8.5 具有潜在狄氏分配的主题建模
  • 9.将机器学习模型嵌入网络应用
    • 9.1序列化拟合scikit-learn评估器
    • 9.2搭建SQLite数据库存储数据
    • 9.3用Flask开发网络应用
    • 9.4将电影评论分类器转换为网络应用
    • 9.5在面向公众的服务器上部署网络应用
  • 10.用回归分析预测连续目标变量
    • 10.1 线性回归简介
    • 10.2 探索住房数据集
    • 10.3普通最小二乘线性回归模型的实现
    • 10.4利用RANSAC拟合稳健的回归模型
    • 10.5评估线性回归模型的性能
    • 10.6用正则化方法进行回归
    • 10.7将线性回归模型转换为曲线——多项式回归
    • 10.8用随机森林处理非线性关系
    • 10.9小结
  • 11.用聚类分析处理无标签数据
    • 11.1 用k-均值进行相似性分组
    • 11.2 把集群组织成有层次的树
    • 11.3 通过DBSCAN定位高密度区域
  • 12从零开始实现多层人工神经
  • 13用TensorFlow并行训练神经网络
  • 14深入探讨TensorFlow的工作原理
  • 15深度卷积神经网络图像识别
  • 14用递归神经网络为序列数据建模

本文简要介绍了python机器学习第二版前11章的笔记,因为12-16章,主要介绍的是TensorFlow,(我们不使用者这个包)以及深度学习的内容。下一站开始深度学习。

1 赋予计算机从数据中学习的能力

1.1 构建把数据转换成知识的智能

1.2 三种不同类型的机器学习

本节将讨论有监督、无监督和强化三种不同类型的机器学习,分析它们之间的根本差别,并用概念性的例子开发一个可以解决实际问题的应用:
机器学习——python机器学习第2版笔记_第1张图片
用有监督学习预测未来
用强化学习解决交互问题
用无监督学习发现隐藏结构

1.3 基本术语与符号

1.4 构建机器学习系统的路线图

机器学习——python机器学习第2版笔记_第2张图片

1.5 用python进行机学习

安装包:NumPy 、SciPy 、scikit-learn 、Matplotlib 、pandas
安装anaconda

2 训练简单的机器学习分类算法

2.1 人工神经元——机器学习早期历史一瞥

人工神经元的正式定义
感知器学习规则
感知器的一般概念图:
机器学习——python机器学习第2版笔记_第3张图片

2.2 在python中实现感知器学习

面向对象的感知器API
在鸢尾花数据集上训练感知器模型

2.3 自适应神经元和学习收敛

1.梯度下降为最小代价函数
2.用Python实现Adaline
机器学习——python机器学习第2版笔记_第4张图片

3.通过调整特征大小改善梯度下降
标准化:
x j = ( x j − u j ) / d e t a j x_j=(x_j-u_j)/deta_j xj=(xjuj)/detaj
4.大规模机器学习与随机梯度下降

3 scikit-learn机器学习分类器一览

本章主要介绍:
·介绍强大且常用的分类算法,如逻辑回归、支持向量机和决策树。
·scikit-learn机器学习库通过对用户友好的Python API提供各种机器学习
算法,本章将介绍实例并对其进行解释。
·讨论线性和非线性决策边界分类器的优劣。

3.1 选择分类算法

3.2 了解scikit-learn软件库的第一步——训练感知器

3.3 基于逻辑回归的分类概率建模

1.逻辑回归的直觉与条件概率
2.学习逻辑代价函数的权重
3.把转换的Adaline用于逻辑回归算法
4.用scikit-learn训练逻辑回归模型
5.通过正则化解决过拟合问题
L2正则化(有时也称为L2收缩或权重衰减)

3.4 支持向量机的最大余量分类

机器学习——python机器学习第2版笔记_第5张图片
1.最大边际的直觉
2.用松弛变量处理非线性可分
3.其他的scikit-learn实现

3.5 用核支持向量机求解非线性问题

核方法的逻辑是针对线性不可分数据,建立非线性组合,通过映射函数把原始特征投影到一个高维空间,特征在该空间变得线性可分。
1.处理线性不可分数据的核方法
2.利用核技巧,发现高维空间的分离超平面
机器学习——python机器学习第2版笔记_第6张图片

3.6 决策树学习

1.最大限度地获取信息——获得最大收益
2.构建决策树
3.通过随机森林组合多个决策树

3.4 K-近邻——一种懒惰的学习算法

3.8 小结

本章学习了许多不同的解决线性和非线性问题的机器学习算法。如果关心可解释性,决策树特别有吸引力。逻辑回归不仅是一种有用的在线随机梯度下降模型,而且还可以预测特定事件的概率。虽然支持向量机有强大的线性模型,也可以通过核技巧扩展到非线性问题,但必须调整许多参数才能做好预测。相比之下,像随机森林这样的组合方法不需要调整太多参数,而且不易过拟合,像决策树一样容易,这使得其成为许多实际问题领域具有吸引
力的模型。KNN分类器通过懒惰学习提供了另一种分类方法,允许在没有任何模型训练的情况下进行预测,但预测所涉及的计算成本昂贵。

4 构建良好的训练集——预处理

本章将讨论必要的数据预处理技术,以帮助建立良好的机器学习模型。本章将主要涵盖下述几个方面:
·去除和填补数据集的缺失数值
·将分类数据转换为适合机器学习算法的格式
·为构造模型选择相关的特征

4.1 处理缺失数据

1.识别数据中的缺失数值
2.删除缺失的数据
3.填补缺失的数据
4.了解scikit-learn评估器API

4.2 处理分类数据

1.名词特征和序数特征
2.映射序数特征
3.分类标签编码
4.为名词特征做热编码

4.3 分裂数据集为独立的训练集和测试集

4.4 把特征保持在同一尺度上

归一化和标准化两种常见方法可以将不同的特征统一到同一比例。这些术语不严格而且经常在不同领域使用,具体含义要根据场景来判断。归一化通常指的是把特征的比例调整到[0,1]区间,这是最小最大比例调整的一种特殊情况。
使用标准化,可以把特征列的中心设在均值为0且标准偏差为1的位置,这样特征列呈正态分布,可以使学习权重更容易。

4.5 选择有意义的特征

过拟合的原因是,与给定的训练数据相比,我们的模型太过复杂。减少泛化误差的常见解决方案如下:
·收集更多的训练数据
·通过正则化引入对复杂性的惩罚
·选择参数较少的简单模型
·减少数据的维数
1.L1和L2正则化
2.为序数特征选择算法
另外一种降低模型复杂度以及避免过拟合的方法是通过特征选择降维,这对未正则化的模型特别有用。主要有两类降维技术:特征选择和特征提取。
经典的序数特征选择算法是逆顺序选择(SBS),其目的是应对分类器性能最小的衰减来降低初始特征子空间的维数,从而提高计算效率。

4.6 用随机森林评估特征的重要性

前面的章节学习了如何通过逻辑回归用L1正则化来消除不相关的特征,用SBS算法进行特征选择,并将其应用到KNN算法。另一个用来从数据集中选择相关特征的有用方法是随机森林。

5. 通过降维压缩数据

本章学习了用于特征提取降维的三种不同的基本技术:标准PCA、LDA和核PCA。PCA将数据投影到低维子空间,忽略分类标签,沿着正交特征轴最大化方差。与PCA相反,LDA是一种有监督的降维技术,这意味着它考虑了训练集中的分类信息,试图在线性特征空间中最大化类的可分性。
最后,了解了非线性特征提取器核PCA。用核技巧和临时投射到更高维度特征空间的方法,最终能够把非线性特征组成的数据集压缩到低维子空间,这些类在这里线性可分。

5.1 用主成分分析实现无监督降维

特征选择和特征提取的区别在于,特征选择算法(如序数逆选择)保持原始特征,特征提取将数据转换或投影到新的特征空间。在降维的背景下,可以把特征提取理解为数据压缩方法,其目的是维护大部分的相关信息。PCA是一种无监督学习方法
1.主成分分析的主要步骤
2.逐步提取主成分
1)标准化数据集。
2)构建协方差矩阵。
3)获取协方差矩阵特征值和特征向量。
4)以降序对特征值排序,从而对特征向量排序。
3.总方差和解释方差
4.特征变换
5.scikit-learn的主成分分析

5.2 基于线性判别分析的有监督数据压缩

PCA试图找到数据集中最大方差的正交成分轴,而LDA的目标是寻找和优化具有可分性的特征子空间。
1.主成分分析与线性判别分析
2.线性判别分析的内部逻辑
3.计算散布矩阵
4.在新的特征子空间选择线性判别式
5.将样本投影到新的特征空间
6.用scikit-learn实现的LDA

5.3 非线性映射的核主成分分析

1.核函数和核技巧
2.用Python实现核主成分分析
3.投影新的数据点
4.scikit-learn的核主成分分析

6. 模型评估和超参数调优的最佳实践

6.1 用管道方法简化工作流

这一部分将介绍一个非常方便的工具,scikit-learn的Pipeline类。可以拟合任意多个转换步骤的模型,并以此对新数据进行预测。

6.2 使用k折交叉验证评估模型的性能

抵抗交叉验证和k折交叉验证,它有助于获得
对模型泛化性能的可靠评估,即模型对未见过的数据的表现。
抵抗验证方法把初始数据集分裂成独立的训练集和测试集,前者用于训练模型,后者用来评估模型的泛化性能。抵抗方法的缺点是性能评估可能会对如何把训练集分裂成训练子集和验证子集非常敏感,评估结果会随不同数据样本而变化。
k折交叉验证将训练集随机分裂成k个无更换子集,其中k–1个子集用于模型训练,一个子集用于性能评估。重复该过程k次,得到k个模型和k次性能估计。

6.3 用学习和验证曲线调试算法

1.用学习曲线诊断偏差和方差问题
2.用验证曲线解决过拟合和欠拟合问题
验证曲线是通过解决过拟合和欠拟合问题来提高模型性能的有力工具。虽然验证曲线与学习曲线相关,但是我们并不根据训练和测试准确度与样本规模之间的函数关系来绘图,而是通过调整模型参数来调优,例如逻辑回归中的逆正则化参数C。

6.4 通过网格搜索为机器学习模型调优

1.通过网格搜索为超参数调优
网格搜索方法的逻辑非常简单,属于暴力穷尽搜索类型,预先定义好不同的超参数值,然后让计算机针对每种组合分别评估模型的性能,从而获得最佳组合参数值。
2.以嵌套式交叉验证来选择算法

6.5 比较不同的性能评估指标

前面的章节用模型准确度来评估模型,这是有效且可量化的模型性能指标。然而,还有几个其他的性能指标也可以度量模型的相关性,如精度、召回率和F1分数。
1.含混矩阵
真阳性(TP)、真阴性(TN)、假阳性(FP)和假阴性(FN)计数值所构成的方阵
机器学习——python机器学习第2版笔记_第7张图片

2.优化分类模型的准确度和召回率
3.绘制受试者操作特性图
4.多元分类评分指标

6.6 处理类的不平衡问题

类的不平衡是个常见问题,即当数据集的一个或多个类的样本被过度代表。
处理类不平衡问题的其他常用策略包括对少数类上采样,对多数类下采样以及生成人造训练样本。
另一种处理类不平衡问题的技术是人工生成训练样本。
使用最广泛的人工生成训练样本的算法可能是人工生成少数类的过采样技术(SMOTE)

7.综合不同模型的组合学习

7.1 集成学习

集成方法的目标是组合不同的分类器,形成比单个分类器具有更好泛化性能的元分类器。

7.2 采用多数票机制的集成分类器

1.实现基于多数票的简单分类器
2.用多数票原则进行预测
3.评估和优化集成分类器

7.3 套袋——基于导引样本构建分类器集成

实践中更复杂的分类任务和高维度数据集容易导致单个决策树模型过拟合,这正是套袋算法能真正发挥作用的地方。
最后注意到套袋算法可以有效地减少模型方差。然而,套袋在减少模型偏差方面却无效,也就是说,模型过于简单以至于无法很好地捕捉数据中的趋势。
这就是为什么我们想要在低偏差集成分类器上实现套袋,例如修剪决策树。

7.4 通过自适应增强来利用弱学习者

机器学习——python机器学习第2版笔记_第8张图片
原始的增强过程被总结为以下四个关键步骤:
1.用从训练集D无替换抽取的训练样本随机子集d 1 来训练弱学习者C 1
2.从训练集无替换抽取第二个随机训练子集d 2 并把之前的分类错误样本中的50%加入该子集来训练弱学习者C 2
3.从训练集D找出那些与C 1 和C 2 不一致的样本形成训练样本d 3 来训练第3个弱学习者C 3
4.通过多数票机制集成弱学习者C 1 ,C 2 和C 3

8.应用机器学习于情感分析

本章将主要涵盖下述几个方面:
·清洗和准备文本数据
·根据文本数据建立特征向量
·训练机器学习模型来区分正面或者负面评论
·用基于外存的学习方法来处理大型文本数据集
·根据文档推断主题进行分类

8.1 为文本处理预备好IMDb电影评论数据

1.获取电影评论数据集
2.把电影评论数据预处理成更方便格式的数据

8.2 词袋模型介绍

1.把词转换成特征向量
2.通过词频逆反文档频率评估单词相关性
tf-idf
3.清洗文本数据
4.把文档处理为令牌

8.3 训练文档分类的逻辑回归模型

8.4 处理更大的数据集——在线算法和核心学习

8.5 具有潜在狄氏分配的主题建模

本节将介绍一种常用的被称为潜在狄氏分配(LDA)的主题建模技术。然而,请注意,虽然潜在狄氏分配通常缩写为LDA,但不要与线性判别分析混淆,那是一种有监督的降维技术,第5章曾经介绍过。
1.使用LDA分解文本文档
LDA是一种生成概率模型,试图找出经常出现在不同文档中的单词。假设每个文档都是由不同单词组成的混合体,那么经常出现的单词就代表着主
题。
2.LDA与scikit-learn

9.将机器学习模型嵌入网络应用

9.1序列化拟合scikit-learn评估器

9.2搭建SQLite数据库存储数据

9.3用Flask开发网络应用

9.4将电影评论分类器转换为网络应用

9.5在面向公众的服务器上部署网络应用

10.用回归分析预测连续目标变量

10.1 线性回归简介

1.简单线性回归
2.多元线性回归

10.2 探索住房数据集

1.加载住房数据集
2.可视化数据集的重要特点
探索性数据分析(EDA)是在进行机器学习模型训练之前值得推荐的重要一步。
散点图矩阵
3.用关联矩阵查看关系
关联矩阵是包含皮尔森积矩相关系数(通常简称为皮尔森的r)的正方形矩阵,用来度量特征对之间的线性依赖关系。

10.3普通最小二乘线性回归模型的实现

10.4利用RANSAC拟合稳健的回归模型

除了淘汰离群值之外,还有一种更为稳健的回归方法,即采用随机抽样一致性(RANSAC)的算法,根据数据子集(所谓的内点)拟合回归模型。

10.5评估线性回归模型的性能

残差图是判断回归模型常用的图形工具。这有助于检测非线性和异常值,并检查这些错误是否呈随机分布。
另一个有用的模型性能定量度量是所谓的均方误差(MSE),它仅仅是为了拟合线性回归模型,而将SSE成本均值最小化的结果。
有时候报告决定系数(R 2 )可能更有用,可以把这理解为MSE的标准版,目的是为更好地解释模型的性能。

10.6用正则化方法进行回归

正则线性回归最常用的方法包括所谓的岭回归、最小绝对收缩与选择算子(LASSO)以及弹性网
络。岭回归是一个L2惩罚模型。

10.7将线性回归模型转换为曲线——多项式回归

10.8用随机森林处理非线性关系

1.决策树回归
2.随机森林回归

10.9小结

本章开篇学习了如何构建简单的线性回归模型,以分析单个解释变量和连续响应变量之间的关系。然后讨论了一种有用的解释数据分析技术,以查
看数据中的模式和异常,这是在预测建模任务中迈出的重要的第一步。
我们采用基于梯度的优化方法实现线性回归建立了第一个模型。然后看到了如何把scikit-learn线性模型用于回归,实现用于处理离群情况的稳健回
归方法(RANSAC)。为了评估回归模型的预测性能,我们计算了平均误差平方和以及相关的R 2 度量。此外,还讨论了判断回归模型问题的图解方法:残差图。
之后我们讨论了如何把正则化方法应用于回归模型以降低模型复杂度,同时避免过拟合。然后介绍了为非线性关系建模的几种方法,包括多项式特征变换和随机森林回归。

11.用聚类分析处理无标签数据

11.1 用k-均值进行相似性分组

1.scikit-learn的k-均值聚类
2.k-均值++——更聪明地设置初始聚类中心的方

3.硬聚类与软聚类
硬聚类描述了一类算法,把数据集中的每个样本分配到一个集群,例如在前面小节中讨论过的k-均值算法。与此相反,软聚类算法(有时也称为模糊聚类)将一个样本分配给一个或多个集群。
4.用肘法求解最佳聚类数
肘法的逻辑是识别当失真增速最快时的k值,如果为不同k值绘制失真图,情况就会变得更清楚。
5.通过轮廓图量化聚类质量

11.2 把集群组织成有层次的树

1.以自下而上的方式聚类
2.在距离矩阵上进行层次聚类
3.热度图附加树状图
4.scikit-learn凝聚聚类方法

11.3 通过DBSCAN定位高密度区域

基于密度的有噪声的空间聚类应(DBSCAN),不像k-均值方法那样假设集群呈球形,或是把数据集分成不同的需要人工设定分界点的层级。顾名思义,基于密度的聚类把标签分配给样本点密集的区域。DBSCAN的密度定义为在指定半径ε范围内的点数。

12从零开始实现多层人工神经

13用TensorFlow并行训练神经网络

14深入探讨TensorFlow的工作原理

15深度卷积神经网络图像识别

14用递归神经网络为序列数据建模

你可能感兴趣的:(机器学习,python,机器学习,tensorflow)