本书对机器学习的各种算法进行了系统的讲解。第1章对机器学习以及Python在机器学习中的应用进行了简要的介绍,在后续章节分别讨论了数据分类(第2、3章)、数据预处理(第4、5章)、模型优化(第6章)、集成学习(第7章)、回归(第10章)、聚类(第11章),以及当前流行的神经网络及其深度学习(第12、13章)。每个章节基本上都是按照算法介绍、Python实现,以及使用scikit-learn来应用算法这样的模式进行讨论的,让读者既能掌握算法的本质,又能尽快将其应用到实际开发中去。
封面图
目录
- 译者序
- 推荐序
- 作者简介
- 审校者简介
- 前言
- 第1章赋予计算机学习数据的能力1
- 1.1构建智能机器将数据转化为知识1
- 1.2机器学习的三种不同方法1
- 1.2.1通过监督学习对未来事件进行预测2
- 1.2.2通过强化学习解决交互式问题4
- 1.2.3通过无监督学习发现数据本身潜在的结构4
- 1.2.4基本术语及符号介绍5
- 1.3构建机器学习系统的蓝图6
- 1.3.1数据预处理6
- 1.3.2选择预测模型类型并进行训练7
- 1.3.3模型验证与使用未知数据进行预测8
- 1.4Python在机器学习中的应用8
- 本章小结9
- 第2章机器学习分类算法10
- 2.1人造神经元—早期机器学习概览10
- 2.2使用Python实现感知器学习算法13
- 2.3自适应线性神经元及其学习的收敛性19
- 2.3.1通过梯度下降最小化代价函数20
- 2.3.2使用Python实现自适应线性神经元21
- 2.3.3大规模机器学习与随机梯度下降25
- 本章小结29
- 第3章使用scikit-learn实现机器学习分类算法30
- 3.1分类算法的选择30
- 3.2初涉scikit-learn的使用30
- 使用scikit-learn训练感知器31
- 3.3逻辑斯谛回归中的类别概率34
- 3.3.1初识逻辑斯谛回归与条件概率34
- 3.3.2通过逻辑斯谛回归模型的代价函数获得权重36
- 3.3.3使用scikit-learn训练逻辑斯谛回归模型37
- 3.3.4通过正则化解决过拟合问题39
- 3.4使用支持向量机最大化分类间隔41
- 3.4.1对分类间隔最大化的直观认识41
- 3.4.2使用松弛变量解决非线性可分问题42
- 3.4.3使用scikit-learn实现SVM44
- 3.5使用核SVM解决非线性问题44
- 3.6决策树48
- 3.6.1最大化信息增益—获知尽可能准确的结果49
- 3.6.2构建决策树52
- 3.6.3通过随机森林将弱分类器集成为强分类器53
- 3.7惰性学习算法—k-近邻算法54
- 本章小结57
- 第4章数据预处理—构建好的训练数据集58
- 4.1缺失数据的处理58
- 4.1.1将存在缺失值的特征或样本删除59
- 4.1.2缺失数据填充60
- 4.1.3理解scikit-learn预估器的API60
- 4.2处理类别数据61
- 4.2.1有序特征的映射61
- 4.2.2类标的编码62
- 4.2.3标称特征上的独热编码63
- 4.3将数据集划分为训练数据集和测试数据集64
- 4.4将特征的值缩放到相同的区间65
- 4.5选择有意义的特征66
- 4.5.1使用L1正则化满足数据稀疏化67
- 4.5.2序列特征选择算法70
- 4.6通过随机森林判定特征的重要性74
- 本章小结76
- 第5章通过降维压缩数据77
- 5.1无监督数据降维技术—主成分分析77
- 5.1.1总体方差与贡献方差78
- 5.1.2特征转换80
- 5.1.3使用scikit-learn进行主成分分析82
- 5.2通过线性判别分析压缩无监督数据84
- 5.2.1计算散布矩阵85
- 5.2.2在新特征子空间上选取线性判别算法87
- 5.2.3将样本映射到新的特征空间89
- 5.2.4使用scikit-learn进行LDA分析90
- 5.3使用核主成分分析进行非线性映射91
- 5.3.1核函数与核技巧91
- 5.3.2使用Python实现核主成分分析94
- 5.3.3映射新的数据点99
- 5.3.4scikit-learn中的核主成分分析102
- 本章小结103
- 第6章模型评估与参数调优实战104
- 6.1基于流水线的工作流104
- 6.1.1加载威斯康星乳腺癌数据集104
- 6.1.2在流水线中集成数据转换及评估操作105
- 6.2使用k折交叉验证评估模型性能106
- 6.2.1holdout方法106
- 6.2.2k折交叉验证107
- 6.3通过学习及验证曲线来调试算法110
- 6.3.1使用学习曲线判定偏差和方差问题110
- 6.3.2通过验证曲线来判定过拟合与欠拟合112
- 6.4使用网格搜索调优机器学习模型113
- 6.4.1使用网络搜索调优超参114
- 6.4.2通过嵌套交叉验证选择算法115
- 6.5了解不同的性能评价指标116
- 6.5.1读取混淆矩阵116
- 6.5.2优化分类模型的准确率和召回率117
- 6.5.3绘制ROC曲线118
- 6.5.4多类别分类的评价标准121
- 本章小结121
- 第7章集成学习—组合不同的模型122
- 7.1集成学习122
- 7.2实现一个简单的多数投票分类器125
- 7.3评估与调优集成分类器131
- 7.4bagging —通过bootstrap样本构建集成分类器135
- 7.5通过自适应boosting提高弱学习机的性能138
- 本章小结143
- 第8章使用机器学习进行情感分析144
- 8.1获取IMDb电影评论数据集144
- 8.2词袋模型简介146
- 8.2.1将单词转换为特征向量146
- 8.2.2通过词频-逆文档频率计算单词关联度147
- 8.2.3清洗文本数据148
- 8.2.4标记文档149
- 8.3训练用于文档分类的逻辑斯谛回归模型151
- 8.4使用大数据—在线算法与外存学习152
- 本章小结155
- 第9章在Web应用中嵌入机器学习模型156
- 9.1序列化通过scikit-learn拟合的模型156
- 9.2使用SQLite数据库存储数据158
- 9.3使用Flask开发Web应用160
- 9.3.1第一个Flask Web应用160
- 9.3.2表单验证及渲染161
- 9.4将电影分类器嵌入Web应用164
- 9.5在公共服务器上部署Web应用169
- 本章小结172
- 第10章使用回归分析预测连续型目标变量173
- 10.1简单线性回归模型初探173
- 10.2波士顿房屋数据集174
- 10.3基于最小二乘法构建线性回归模型178
- 10.3.1通过梯度下降计算回归参数178
- 10.3.2使用scikit-learn估计回归模型的系数181
- 10.4使用RANSAC拟合高鲁棒性回归模型182
- 10.5线性回归模型性能的评估184
- 10.6回归中的正则化方法185
- 10.7线性回归模型的曲线化-多项式回归186
- 10.7.1房屋数据集中的非线性关系建模188
- 10.7.2使用随机森林处理非线性关系190
- 本章小结193
- 第11章聚类分析——处理无类标数据194
- 11.1使用k-means算法对相似对象进行分组194
- 11.1.1k-means++196
- 11.1.2硬聚类与软聚类198
- 11.1.3使用肘方法确定簇的最佳数量199
- 11.1.4通过轮廓图定量分析聚类质量200
- 11.2层次聚类203
- 11.2.1基于距离矩阵进行层次聚类204
- 11.2.2树状图与热度图的关联207
- 11.2.3通过scikit-learn进行凝聚聚类208
- 11.3使用DBSCAN划分高密度区域209
- 本章小结212
- 第12章使用人工神经网络识别图像213
- 12.1使用人工神经网络对复杂函数建模213
- 12.1.1单层神经网络回顾214
- 12.1.2多层神经网络架构简介215
- 12.1.3通过正向传播构造神经网络216
- 12.2手写数字的识别218
- 12.2.1获取MNIST数据集218
- 12.2.2实现一个多层感知器222
- 12.3人工神经网络的训练228
- 12.3.1计算逻辑斯谛代价函数228
- 12.3.2通过反向传播训练神经网络230
- 12.4建立对反向传播的直观认识231
- 12.5通过梯度检验调试神经网络232
- 12.6神经网络的收敛性236
- 12.7其他神经网络架构237
- 12.7.1卷积神经网络237
- 12.7.2循环神经网络238
- 12.8关于神经网络的实现239
- 本章小结240
- 第13章使用Theano并行训练神经网络241
- 13.1使用Theano构建、编译并运行表达式241
- 13.1.1什么是Theano242
- 13.1.2初探Theano243
- 13.1.3配置Theano244
- 13.1.4使用数组结构245
- 13.1.5整理思路—线性回归示例247
- 13.2为前馈神经网络选择激励函数250
- 13.2.1逻辑斯谛函数概述250
- 13.2.2通过softmax函数评估多类别分类任务中的类别概率252
- 13.2.3通过双曲正切函数增大输出范围252
- 13.3使用Keras提高训练神经网络的效率254
- 本章小结258