Python数据科学与机器学习:从入门到实践.pdf
Python数据科学与机器学习:从入门到实践.pdf
PDF: https://github.com/jash-git/Jash-good-idea-20200304-001
本书的代码 https://github.com/jash-git/Jash-good-idea-20200304-001
第1 章 入门 ……………………………………………… 1
1.1 安装Enthought Canopy ……………………….. 1
1.2 使用并理解IPython/Jupyter Notebook ….. 6
1.3 Python 基础——第一部分 …………………… 9
1.4 理解Python 代码 ………………………………. 11
1.5 导入模块 …………………………………………. 13
1.5.1 数据结构 ……………………………….. 13
1.5.2 使用列表 ……………………………….. 14
1.5.3 元组 ……………………………………… 17
1.5.4 字典 ……………………………………… 18
1.6 Python 基础——第二部分 …………………. 20
1.6.1 Python 中的函数 …………………….. 20
1.6.2 循环 ……………………………………… 23
1.6.3 探索活动 ……………………………….. 24
1.7 运行Python 脚本 ………………………………. 24
1.7.1 运行Python 代码的其他方式 …… 25
1.7.2 在命令行中运行Python 脚本 …… 25
1.7.3 使用Canopy IDE ……………………. 26
1.8 小结 ………………………………………………… 28
第2 章 统计与概率复习以及Python
实现 ……………………………………………. 29
2.1 数据类型 …………………………………………. 29
2.1.1 数值型数据 ……………………………. 30
2.1.2 分类数据 ……………………………….. 30
2.1.3 定序数据 ……………………………….. 31
2.2 均值、中位数和众数 ………………………… 32
2.2.1 均值 ……………………………………… 32
2.2.2 中位数 …………………………………… 33
2.2.3 众数 ……………………………………… 34
2.3 在Python 中使用均值、中位数和
众数 ………………………………………………… 35
2.3.1 使用NumPy 包计算均值 …………. 35
2.3.2 使用NumPy 包计算中位数 ……… 36
2.3.3 使用SciPy 包计算众数 …………… 37
2.4 标准差和方差 …………………………………… 40
2.4.1 方差 ……………………………………… 40
2.4.2 标准差 ………………………………….. 42
2.4.3 总体方差与样本方差 ………………. 42
2.4.4 在直方图上分析标准差和
方差 ……………………………………… 44
2.4.5 使用Python 计算标准差和
方差 ……………………………………… 44
2.4.6 自己动手 ……………………………….. 45
2.5 概率密度函数和概率质量函数 …………… 45
2.5.1 概率密度函数 ………………………… 45
2.5.2 概率质量函数 ………………………… 46
2.6 各种类型的数据分布 ………………………… 47
2.6.1 均匀分布 ……………………………….. 47
2.6.2 正态分布或高斯分布 ………………. 48
2.6.3 指数概率分布与指数定律 ……….. 50
2.6.4 二项式概率质量函数 ………………. 50
2.6.5 泊松概率质量函数 …………………. 51
2.7 百分位数和矩 …………………………………… 52
2.7.1 百分位数 ……………………………….. 53
2.7.2 矩 …………………………………………. 56
2.8 小结 ………………………………………………… 60
2 目 录
第3 章 Matplotlib 与概率高级概念………… 61
3.1 Matplotlib 快速学习 ………………………….. 61
3.1.1 在一张图形上进行多次绘图 ……. 62
3.1.2 将图形保存为文件 ………………….. 63
3.1.3 调整坐标轴 ……………………………. 64
3.1.4 添加网格 ……………………………….. 65
3.1.5 修改线型和颜色 …………………….. 65
3.1.6 标记坐标轴并添加图例 …………… 68
3.1.7 一个有趣的例子 …………………….. 69
3.1.8 生成饼图 ……………………………….. 70
3.1.9 生成条形图 ……………………………. 71
3.1.10 生成散点图 ………………………….. 72
3.1.11 生成直方图 ………………………….. 72
3.1.12 生成箱线图 ………………………….. 73
3.1.13 自己动手 ……………………………… 74
3.2 协方差与相关系数 ……………………………. 74
3.2.1 概念定义 ……………………………….. 75
3.2.2 相关系数 ……………………………….. 76
3.2.3 在Python 中计算协方差和
相关系数 ……………………………….. 76
3.2.4 相关系数练习 ………………………… 80
3.3 条件概率 …………………………………………. 80
3.3.1 Python 中的条件概率练习 ……….. 81
3.3.2 条件概率作业 ………………………… 84
3.3.3 作业答案 ……………………………….. 85
3.4 贝叶斯定理 ………………………………………. 86
3.5 小结 ………………………………………………… 88
第4 章 预测模型 …………………………………….. 89
4.1 线性回归 …………………………………………. 89
4.1.1 普通最小二乘法 …………………….. 90
4.1.2 梯度下降法 ……………………………. 91
4.1.3 判定系数或r 方 ……………………… 91
4.1.4 使用Python 进行线性回归并
计算r 方 ……………………………….. 92
4.1.5 线性回归练习 ………………………… 94
4.2 多项式回归 ……………………………………… 95
4.2.1 使用NumPy 实现多项式回归 ….. 96
4.2.2 计算r 方误差 …………………………. 98
4.2.3 多项式回归练习 …………………….. 98
4.3 多元回归和汽车价格预测 ………………….. 99
4.3.1 使用Python 进行多元回归 …….. 100
4.3.2 多元回归练习 ………………………. 102
4.4 多水平模型 ……………………………………. 102
4.5 小结 ………………………………………………. 104
第5 章 使用Python 进行机器学习 ……… 105
5.1 机器学习及训练/测试法 ………………….. 105
5.1.1 非监督式学习 ………………………. 106
5.1.2 监督式学习 ………………………….. 107
5.2 使用训练/测试法防止多项式回归
中的过拟合 …………………………………….. 109
5.3 贝叶斯方法——概念 ………………………. 113
5.4 使用朴素贝叶斯实现垃圾邮件
分类器 …………………………………………… 115
5.5 k 均值聚类 ……………………………………… 118
5.6 基于收入与年龄进行人群聚类 …………. 121
5.7 熵的度量 ……………………………………….. 123
5.8 决策树——概念 ……………………………… 124
5.8.1 决策树实例 ………………………….. 126
5.8.2 生成决策树 ………………………….. 127
5.8.3 随机森林 ……………………………… 127
5.9 决策树——使用Python 预测录用
决策 ………………………………………………. 128
5.9.1 集成学习——使用随机森林 ….. 132
5.9.2 练习 ……………………………………. 133
5.10 集成学习 ……………………………………… 133
5.11 支持向量机简介 ……………………………. 135
5.12 使用scikit-learn 通过SVM 进行
人员聚集 ……………………………………… 137
5.13 小结 …………………………………………….. 140
第6 章 推荐系统 …………………………………… 141
6.1 什么是推荐系统 ……………………………… 141
6.2 基于项目的协同过滤 ……………………….. 145
6.3 基于项目的协同过滤是如何工作的 …… 146
6.4 找出电影相似度 ……………………………… 149
6.5 改善电影相似度结果 ……………………….. 155
6.6 向人们推荐电影 ……………………………… 159
6.7 改善推荐结果 …………………………………. 165
6.8 小结 ………………………………………………. 167
第7 章 更多数据挖掘和机器学习技术 …. 168
7.1 k 最近邻的概念 ……………………………….. 168
7.2 使用KNN 预测电影评分 …………………. 170
7.3 数据降维与主成分分析 ……………………. 176
7.3.1 数据降维 ……………………………… 176
7.3.2 主成分分析 ………………………….. 177
7.4 对鸢尾花数据集的PCA 示例 ……………. 178
7.5 数据仓库简介 …………………………………. 182
7.6 强化学习 ………………………………………… 184
7.6.1 Q-learning ……………………………. 185
7.6.2 探索问题 ……………………………… 186
7.6.3 时髦名词 ……………………………… 186
7.7 小结 ………………………………………………. 188
第8 章 处理真实数据 …………………………… 189
8.1 偏差-方差权衡 ……………………………….. 189
8.2 使用k 折交叉验证避免过拟合 ………….. 192
8.3 数据清理和标准化 ………………………….. 196
8.4 清理Web 日志数据 …………………………. 198
8.4.1 对Web 日志应用正则表达式 …. 198
8.4.2 修改1——筛选请求字段 ………. 200
8.4.3 修改2——筛选post 请求 ……. 201
8.4.4 修改3——检查用户代理 ………. 203
8.4.5 筛选爬虫与机器人 ………………… 204
8.4.6 修改4——使用网站专用筛
选器 …………………………………….. 205
8.4.7 Web 日志数据练习 ……………….. 206
8.5 数值型数据的标准化 ………………………. 207
8.6 检测异常值 …………………………………….. 208
8.6.1 处理异常值 ………………………….. 209
8.6.2 异常值练习 ………………………….. 211
8.7 小结 ………………………………………………. 211
第9 章 Apache Spark——大数据上
的机器学习 ……………………………….. 212
9.1 安装Spark ……………………………………… 212
9.1.1 在Windows 系统中安装Spark … 213
9.1.2 在其他操作系统上安装Spark … 214
9.1.3 安装Java Development Kit …….. 214
9.1.4 安装Spark …………………………… 217
9.2 Spark 简介 ……………………………………… 227
9.2.1 可伸缩 …………………………………. 227
9.2.2 速度快 …………………………………. 228
9.2.3 充满活力 ……………………………… 229
9.2.4 易于使用 ……………………………… 229
9.2.5 Spark 组件 ……………………………. 229
9.2.6 在Spark 中使用Python 还是
Scala ……………………………………. 230
9.3 Spark 和弹性分布式数据集 ………………. 231
9.3.1 SparkContext 对象 ………………… 231
9.3.2 创建RDD ……………………………. 232
9.3.3 更多创建RDD 的方法 …………… 233
9.3.4 RDD 操作 …………………………….. 233
9.4 MLlib 简介 …………………………………….. 235
9.4.1 MLlib 功能 …………………………… 235
9.4.2 MLlib 特殊数据类型 ……………… 236
9.5 在Spark 中使用MLlib 实现决策树 …… 236
9.6 在Spark 中实现k 均值聚类 ……………… 245
9.7 TF-IDF …………………………………………… 250
9.7.1 TF-IDF 实战 …………………………. 250
9.7.2 使用TF-IDF…………………………. 251
9.8 使用Spark MLlib 搜索维基百科……….. 251
9.8.1 导入语句 ……………………………… 252
9.8.2 创建初始RDD ……………………… 252
4 目 录
9.8.3 创建并转换HashingTF 对象 … 253
9.8.4 计算TF-IDF 得分 …………………. 254
9.8.5 使用维基百科搜索引擎算法 ….. 254
9.8.6 运行算法 ……………………………… 255
9.9 使用Spark 2.0 中的MLlib 数据框
API ………………………………………………… 255
9.10 小结 …………………………………………….. 259
第10 章 测试与实验设计 ……………………… 260
10.1 A/B 测试的概念…………………………….. 260
10.1.1 A/B 测试 ………………………….. 260
10.1.2 A/B 测试的转化效果测量 …… 262
10.1.3 小心方差 ………………………….. 263
10.2 t 检验与p 值 …………………………………. 263
10.2.1 t 统计量或t 检验 ………………. 264
10.2.2 p 值………………………………….. 264
10.3 使用Python 计算t 统计量和p 值 ……. 265
10.3.1 使用实验数据进行A/B
测试 …………………………………. 265
10.3.2 样本量有关系吗 ……………….. 267
10.4 确定实验持续时间 ………………………… 268
10.5 A/B 测试中的陷阱 ………………………… 269
10.5.1 新奇性效应 ………………………… 270
10.5.2 季节性效应 ………………………… 271
10.5.3 选择性偏差 ………………………… 271
10.5.4 数据污染 ……………………………. 272
10.5.5 归因错误 ……………………………. 272
10.6 小结 …………………………………………….. 273
—
第1 章 入門 ……………………………………………… 1
1.1 安裝Enthought Canopy ……………………….. 1
1.2 使用並理解IPython/Jupyter Notebook ….. 6
1.3 Python 基礎——第一部分 …………………… 9
1.4 理解Python 代碼 ………………………………. 11
1.5 導入模組 …………………………………………. 13
1.5.1 資料結構 ……………………………….. 13
1.5.2 使用列表 ……………………………….. 14
1.5.3 元組 ……………………………………… 17
1.5.4 字典 ……………………………………… 18
1.6 Python 基礎——第二部分 …………………. 20
1.6.1 Python 中的函數 …………………….. 20
1.6.2 迴圈 ……………………………………… 23
1.6.3 探索活動 ……………………………….. 24
1.7 運行Python 腳本 ………………………………. 24
1.7.1 運行Python 代碼的其他方式 …… 25
1.7.2 在命令列中運行Python 腳本 …… 25
1.7.3 使用Canopy IDE ……………………. 26
1.8 小結 ………………………………………………… 28
第2 章 統計與概率複習以及Python
實現 ……………………………………………. 29
2.1 資料類型 …………………………………………. 29
2.1.1 數值型資料 ……………………………. 30
2.1.2 分類資料 ……………………………….. 30
2.1.3 定序數據 ……………………………….. 31
2.2 均值、中位數和眾數 ………………………… 32
2.2.1 均值 ……………………………………… 32
2.2.2 中位數 …………………………………… 33
2.2.3 眾數 ……………………………………… 34
2.3 在Python 中使用均值、中位數和
眾數 ………………………………………………… 35
2.3.1 使用NumPy 包計算均值 …………. 35
2.3.2 使用NumPy 包計算中位數 ……… 36
2.3.3 使用SciPy 包計算眾數 …………… 37
2.4 標準差和方差 …………………………………… 40
2.4.1 方差 ……………………………………… 40
2.4.2 標準差 ………………………………….. 42
2.4.3 總體方差與樣本方差 ………………. 42
2.4.4 在長條圖上分析標準差和
方差 ……………………………………… 44
2.4.5 使用Python 計算標準差和
方差 ……………………………………… 44
2.4.6 自己動手 ……………………………….. 45
2.5 概率密度函數和概率品質函數 …………… 45
2.5.1 概率密度函數 ………………………… 45
2.5.2 概率品質函數 ………………………… 46
2.6 各種類型的資料分佈 ………………………… 47
2.6.1 均勻分佈 ……………………………….. 47
2.6.2 正態分佈或高斯分佈 ………………. 48
2.6.3 指數概率分佈與指數定律 ……….. 50
2.6.4 二項式概率品質函數 ………………. 50
2.6.5 泊松概率品質函數 …………………. 51
2.7 百分位數和矩 …………………………………… 52
2.7.1 百分位數 ……………………………….. 53
2.7.2 矩 …………………………………………. 56
2.8 小結 ………………………………………………… 60
2 目 錄
第3 章 Matplotlib 與概率高級概念………… 61
3.1 Matplotlib 快速學習 ………………………….. 61
3.1.1 在一張圖形上進行多次繪圖 ……. 62
3.1.2 將圖形保存為檔 ………………….. 63
3.1.3 調整坐標軸 ……………………………. 64
3.1.4 添加網格 ……………………………….. 65
3.1.5 修改線型和顏色 …………………….. 65
3.1.6 標記坐標軸並添加圖例 …………… 68
3.1.7 一個有趣的例子 …………………….. 69
3.1.8 生成圓形圖 ……………………………….. 70
3.1.9 生成橫條圖 ……………………………. 71
3.1.10 生成散點圖 ………………………….. 72
3.1.11 生成長條圖 ………………………….. 72
3.1.12 生成箱線圖 ………………………….. 73
3.1.13 自己動手 ……………………………… 74
3.2 協方差與相關係數 ……………………………. 74
3.2.1 概念定義 ……………………………….. 75
3.2.2 相關係數 ……………………………….. 76
3.2.3 在Python 中計算協方差和
相關係數 ……………………………….. 76
3.2.4 相關係數練習 ………………………… 80
3.3 條件概率 …………………………………………. 80
3.3.1 Python 中的條件概率練習 ……….. 81
3.3.2 條件概率作業 ………………………… 84
3.3.3 作業答案 ……………………………….. 85
3.4 貝葉斯定理 ………………………………………. 86
3.5 小結 ………………………………………………… 88
第4 章 預測模型 …………………………………….. 89
4.1 線性回歸 …………………………………………. 89
4.1.1 普通最小二乘法 …………………….. 90
4.1.2 梯度下降法 ……………………………. 91
4.1.3 判定係數或r 方 ……………………… 91
4.1.4 使用Python 進行線性回歸並
計算r 方 ……………………………….. 92
4.1.5 線性回歸練習 ………………………… 94
4.2 多項式回歸 ……………………………………… 95
4.2.1 使用NumPy 實現多項式回歸 ….. 96
4.2.2 計算r 方誤差 …………………………. 98
4.2.3 多項式回歸練習 …………………….. 98
4.3 多元回歸和汽車價格預測 ………………….. 99
4.3.1 使用Python 進行多元回歸 …….. 100
4.3.2 多元回歸練習 ………………………. 102
4.4 多水準模型 ……………………………………. 102
4.5 小結 ………………………………………………. 104
第5 章 使用Python 進行機器學習 ……… 105
5.1 機器學習及訓練/測試法 ………………….. 105
5.1.1 非監督式學習 ………………………. 106
5.1.2 監督式學習 ………………………….. 107
5.2 使用訓練/測試法防止多項式回歸
中的過擬合 …………………………………….. 109
5.3 貝葉斯方法——概念 ………………………. 113
5.4 使用樸素貝葉斯實現垃圾郵件
分類器 …………………………………………… 115
5.5 k 均值聚類 ……………………………………… 118
5.6 基於收入與年齡進行人群聚類 …………. 121
5.7 熵的度量 ……………………………………….. 123
5.8 決策樹——概念 ……………………………… 124
5.8.1 決策樹實例 ………………………….. 126
5.8.2 生成決策樹 ………………………….. 127
5.8.3 隨機森林 ……………………………… 127
5.9 決策樹——使用Python 預測錄用
決策 ………………………………………………. 128
5.9.1 集成學習——使用隨機森林 ….. 132
5.9.2 練習 ……………………………………. 133
5.10 集成學習 ……………………………………… 133
5.11 支持向量機簡介 ……………………………. 135
5.12 使用scikit-learn 通過SVM 進行
人員聚集 ……………………………………… 137
5.13 小結 …………………………………………….. 140
第6 章 推薦系統 …………………………………… 141
6.1 什麼是推薦系統 ……………………………… 141
6.2 基於項目的協同過濾 ……………………….. 145
6.3 基於專案的協同過濾是如何工作的 …… 146
6.4 找出電影相似度 ……………………………… 149
6.5 改善電影相似度結果 ……………………….. 155
6.6 向人們推薦電影 ……………………………… 159
6.7 改善推薦結果 …………………………………. 165
6.8 小結 ………………………………………………. 167
第7 章 更多資料採擷和機器學習技術 …. 168
7.1 k 最近鄰的概念 ……………………………….. 168
7.2 使用KNN 預測電影評分 …………………. 170
7.3 資料降維與主成分分析 ……………………. 176
7.3.1 數據降維 ……………………………… 176
7.3.2 主成分分析 ………………………….. 177
7.4 對鳶尾花資料集的PCA 示例 ……………. 178
7.5 資料倉庫簡介 …………………………………. 182
7.6 強化學習 ………………………………………… 184
7.6.1 Q-learning ……………………………. 185
7.6.2 探索問題 ……………………………… 186
7.6.3 時髦名詞 ……………………………… 186
7.7 小結 ………………………………………………. 188
第8 章 處理真實資料 …………………………… 189
8.1 偏差-方差權衡 ……………………………….. 189
8.2 使用k 折交叉驗證避免過擬合 ………….. 192
8.3 資料清理和標準化 ………………………….. 196
8.4 清理Web 日誌資料 …………………………. 198
8.4.1 對Web 日誌應用規則運算式 …. 198
8.4.2 修改1——篩選請求欄位 ………. 200
8.4.3 修改2——篩選post 請求 ……. 201
8.4.4 修改3——檢查使用者代理 ………. 203
8.4.5 篩選爬蟲與機器人 ………………… 204
8.4.6 修改4——使用網站專用篩
選器 …………………………………….. 205
8.4.7 Web 日誌資料練習 ……………….. 206
8.5 數值型資料的標準化 ………………………. 207
8.6 檢測異常值 …………………………………….. 208
8.6.1 處理異常值 ………………………….. 209
8.6.2 異常值練習 ………………………….. 211
8.7 小結 ………………………………………………. 211
第9 章 Apache Spark——大數據上
的機器學習 ……………………………….. 212
9.1 安裝Spark ……………………………………… 212
9.1.1 在Windows 系統中安裝Spark … 213
9.1.2 在其他作業系統上安裝Spark … 214
9.1.3 安裝Java Development Kit …….. 214
9.1.4 安裝Spark …………………………… 217
9.2 Spark 簡介 ……………………………………… 227
9.2.1 可伸縮 …………………………………. 227
9.2.2 速度快 …………………………………. 228
9.2.3 充滿活力 ……………………………… 229
9.2.4 易於使用 ……………………………… 229
9.2.5 Spark 組件 ……………………………. 229
9.2.6 在Spark 中使用Python 還是
Scala ……………………………………. 230
9.3 Spark 和彈性分散式資料集 ………………. 231
9.3.1 SparkContext 對象 ………………… 231
9.3.2 創建RDD ……………………………. 232
9.3.3 更多創建RDD 的方法 …………… 233
9.3.4 RDD 操作 …………………………….. 233
9.4 MLlib 簡介 …………………………………….. 235
9.4.1 MLlib 功能 …………………………… 235
9.4.2 MLlib 特殊資料類型 ……………… 236
9.5 在Spark 中使用MLlib 實現決策樹 …… 236
9.6 在Spark 中實現k 均值聚類 ……………… 245
9.7 TF-IDF …………………………………………… 250
9.7.1 TF-IDF 實戰 …………………………. 250
9.7.2 使用TF-IDF…………………………. 251
9.8 使用Spark MLlib 搜索維琪百科……….. 251
9.8.1 導入語句 ……………………………… 252
9.8.2 創建初始RDD ……………………… 252
4 目 錄
9.8.3 創建並轉換HashingTF 對象 … 253
9.8.4 計算TF-IDF 得分 …………………. 254
9.8.5 使用維琪百科搜尋引擎演算法 ….. 254
9.8.6 運行演算法 ……………………………… 255
9.9 使用Spark 2.0 中的MLlib 資料框
API ………………………………………………… 255
9.10 小結 …………………………………………….. 259
第10 章 測試與實驗設計 ……………………… 260
10.1 A/B 測試的概念…………………………….. 260
10.1.1 A/B 測試 ………………………….. 260
10.1.2 A/B 測試的轉化效果測量 …… 262
10.1.3 小心方差 ………………………….. 263
10.2 t 檢驗與p 值 …………………………………. 263
10.2.1 t 統計量或t 檢驗 ………………. 264
10.2.2 p 值………………………………….. 264
10.3 使用Python 計算t 統計量和p 值 ……. 265
10.3.1 使用實驗資料進行A/B
測試 …………………………………. 265
10.3.2 樣本量有關係嗎 ……………….. 267
10.4 確定實驗持續時間 ………………………… 268
10.5 A/B 測試中的陷阱 ………………………… 269
10.5.1 新奇性效應 ………………………… 270
10.5.2 季節性效應 ………………………… 271
10.5.3 選擇性偏差 ………………………… 271
10.5.4 資料污染 ……………………………. 272
10.5.5 歸因錯誤 ……………………………. 272
10.6 小結 …………………………………………….. 273