機器學(xué)習(xí)是計算機人工智能的重要研究領(lǐng)域和應(yīng)用方向,本書是學(xué)習(xí)和實踐機器學(xué)習(xí)的入門教材,基于Python語言,介紹如何使用機器學(xué)習(xí)的相關(guān)算法對數(shù)據(jù)進行分析。本書在內(nèi)容上涵蓋機器學(xué)習(xí)相關(guān)基礎(chǔ)知識,在組織編排上循序漸進。全書共11章,分為3個部分:第一部分(第1~3章)為機器學(xué)習(xí)基礎(chǔ)知識,包括數(shù)值計算基礎(chǔ)、數(shù)據(jù)分析、數(shù)據(jù)可視化;第二部分(第4~9章)為機器學(xué)習(xí)算法,包括線性模型、樸素貝葉斯、支持向量機、決策樹、聚類分析和集成學(xué)習(xí);第三部分(第10~11章)為實踐項目,包括房價預(yù)測和手寫數(shù)字識別,每章有5個相對獨立的部分,方便教學(xué)使用。
呂焱飛(1978.5—),男,浙江東陽人,金華職業(yè)技術(shù)學(xué)院講師、軟件設(shè)計師,從事數(shù)學(xué)與計算機方面的教學(xué)科研工作二十余年。主講課程包括高等數(shù)學(xué)、Java程序設(shè)計、機器學(xué)習(xí)、NoSQL數(shù)據(jù)庫等。金華市"321專業(yè)技術(shù)人才工程”第三層次培養(yǎng)人員,金華職業(yè)技術(shù)學(xué)院"五個一批”精品課程《機器學(xué)習(xí)》負責(zé)人。
第1章 數(shù)值計算基礎(chǔ) 1
1.1 Python基礎(chǔ) 1
1.1.1 列表與元組 2
1.1.2 切片 3
1.1.3 列表推導(dǎo) 4
1.1.4 生成器表達式 5
1.2 NumPy數(shù)組 6
1.2.1 創(chuàng)建NumPy數(shù)組 6
1.2.2 數(shù)組的屬性 6
1.2.3 reshape 7
1.2.4 Python列表與NumPy數(shù)組 7
1.2.5 創(chuàng)建特定數(shù)組 8
1.2.6 創(chuàng)建單調(diào)數(shù)組 9
1.2.7 生成隨機數(shù) 9
1.3 NumPy索引 10
1.3.1 切片索引 10
1.3.2 布爾索引 11
1.3.3 更復(fù)雜的布爾索引 12
1.3.4 整數(shù)數(shù)組索引 12
1.3.5 索引賦值 13
1.4 多維索引 13
1.4.1 定位單個元素 13
1.4.2 多維切片 14
1.4.3 newaxis 14
1.4.4 Ellipsis 15
1.4.5 整數(shù)數(shù)組索引 16
1.5 廣播 17
1.5.1 一個實例 17
1.5.2 廣播的條件 18
1.5.3 如何廣播 18
1.5.4 幾個操作實例 19
1.5.5 原地修改 21
1.6 圖像處理 22
1.6.1 導(dǎo)入 22
1.6.2 翻轉(zhuǎn) 23
1.6.3 截取下半部分 23
1.6.4 縮小 24
1.6.5 縱向拉伸 24
1.6.6 遮罩 25
1.6.7 添加兩條對角線 26
第2章 數(shù)據(jù)分析 27
2.1 Series 27
2.1.1 簡單的Series 27
2.1.2 指定索引 28
2.1.3 索引的使用 28
2.1.4 將Python字典轉(zhuǎn)換為Series 29
2.1.5 自定義索引 29
2.1.6 判斷NA值 30
2.1.7 索引自動對齊 31
2.2 DataFrame 31
2.2.1 構(gòu)建DataFrame 32
2.2.2 獲取指定列 33
2.2.3 獲取指定行 33
2.2.4 對列賦值 34
2.2.5 索引對齊 35
2.2.6 刪除列 35
2.2.7 內(nèi)部的ndarray 36
2.3 數(shù)據(jù)的選擇 36
2.3.1 數(shù)據(jù)開放平臺 36
2.3.2 導(dǎo)入數(shù)據(jù) 36
2.3.3 選擇列 37
2.3.4 選擇行 37
2.3.5 選擇指定區(qū)域 38
2.3.6 布爾型數(shù)組 39
2.3.7 多個條件的選擇 39
2.3.8 loc與iloc 40
2.4 概要與映射 41
2.4.1 查看數(shù)據(jù)頭部 41
2.4.2 查看所有的列名 42
2.4.3 查看數(shù)據(jù)概要 42
2.4.4 計算數(shù)值的頻率 42
2.4.5 與平均值的差 43
2.4.6 map的用法 43
2.4.7 apply的用法 44
2.4.8 map與apply的區(qū)別 45
2.5 分組與排序 45
2.5.1 導(dǎo)入數(shù)據(jù) 46
2.5.2 分組統(tǒng)計 47
2.5.3 分組最小值 47
2.5.4 用lambda函數(shù)做分組統(tǒng)計 48
2.5.5 更復(fù)雜的分組 49
2.5.6 同時使用多個聚合函數(shù) 49
2.5.7 分組后的排序 50
2.5.8 區(qū)分不同的apply函數(shù) 50
2.5.9 帶“max”的函數(shù) 51
2.6 空值 51
2.6.1 FIFA數(shù)據(jù)集 51
2.6.2 查看空值的數(shù)量 52
2.6.3 計算空值的百分比 52
2.6.4 清除空值 52
2.6.6 清除帶有空值的列 53
2.6.6 填充空值 53
2.6.7 用平均值來填充空值 55
2.6.8 返回值 56
2.7 不一致數(shù)據(jù)的處理 56
2.7.1 TheFuzz庫 56
2.7.2 數(shù)據(jù)集 56
2.7.3 unique 57
2.7.4 清除大寫與空格 57
2.7.5 模糊匹配 58
2.7.6 字段替換 59
第3章 數(shù)據(jù)可視化 60
3.1 Matplotlib基本概念 60
3.1.1 導(dǎo)入與設(shè)置 60
3.1.2 剖析圖形 61
3.1.3 兩種風(fēng)格 63
3.2 作圖基礎(chǔ) 65
3.2.1 繪制直線 65
3.2.2 繪制折線 66
3.2.3 格式字符串 66
3.2.4 繪制散點圖 67
3.2.5 繪制類別數(shù)據(jù) 68
3.2.6 繪制文本 69
3.2.7 繪制注解 70
3.3 MACD指標分析 71
3.3.1 加載貴州茅臺股價數(shù)據(jù) 72
3.3.2 收盤價趨勢圖 72
3.3.3 計算MACD和signal序列 73
3.3.4 繪制MACD指標圖 74
3.3.5 金叉與死叉 74
3.3.6 計算收益 76
3.4 滬深300收益計算 77
3.4.1 加載歷史數(shù)據(jù) 77
3.4.2 繪制趨勢圖 78
3.4.3 計算收益率 78
3.4.4 計算年化收益率 79
3.4.5 計算年化波動率 80
3.4.6 計算最大回撤率 80
3.4.7 計算卡瑪比率 81
3.5 日歷策略 82
3.5.1 指標計算函數(shù) 82
3.5.2 只在每月前5日交易的策略 82
3.5.3 準備數(shù)據(jù) 82
3.5.4 標記出每月前5日 83
3.5.5 計算收益率 84
3.5.6 繪制兩條收益曲線 84
3.5.7 比較收益指標 85
3.5.8 每月后5日的策略 85
第4章 線性模型 87
4.1 機器學(xué)習(xí) 87
4.1.1 傳統(tǒng)軟件與機器學(xué)習(xí) 87
4.1.2 特征與標簽 88
4.1.3 機器學(xué)習(xí)算法的分類 88
4.1.4 CRISP-DM 89
4.2 線性回歸 90
4.2.1 模型公式 91
4.2.2 scikit-learn 91
4.2.3 線性回歸的用法 92
4.2.4 線性回歸的參數(shù) 92
4.2.5 殘差 93
4.2.6 均方誤差與平均絕對誤差 93
4.2.7 Bootstrap統(tǒng)計方法 94
4.3 嶺回歸 95
4.3.1 bootstrap函數(shù) 96
4.3.2 系數(shù)分布 97
4.3.3 alpha參數(shù) 99
4.3.4 最佳alpha參數(shù) 100
4.4 LASSO回歸 101
4.4.1 基本用法 101
4.4.2 非零的系數(shù) 101
4.4.3 最佳alpha參數(shù) 102
4.4.4 特征選擇 102
4.5 邏輯回歸 103
4.5.1 iris數(shù)據(jù)集 103
4.5.2 訓(xùn)練集與測試集 104
4.5.3 LogisticRegression類 104
4.5.4 混淆矩陣 105
4.5.5 預(yù)測的概率 105
第5章 樸素貝葉斯 107
5.1 貝葉斯原理 107
5.1.1 患癌的概率 107
5.1.2 貝葉斯公式 108
5.1.3 樸素貝葉斯 108
5.1.4 sklearn中的樸素貝葉斯 109
5.2 TF-IDF 110
5.2.1 詞項頻率與文檔頻率 110
5.2.2 逆文檔頻率 110
5.2.3 TF-IDF 110
5.2.4 TfidfVectorizer 111
5.3 中文文檔分類 112
5.3.1 中文分類數(shù)據(jù)集 112
5.3.2 jieba分詞 113
5.3.3 加載文本 113
5.3.4 停用詞表 114
5.3.5 計算TF-IDF權(quán)重 114
5.3.6 樸素貝葉斯分類器 115
第6章 支持向量機 116
6.1 支持向量 116
6.1.1 鳶尾花數(shù)據(jù)集 116
6.1.2 線性SVC 118
6.2 特征縮放 119
6.2.1 特殊的數(shù)據(jù)點 119
6.2.2 標準縮放 120
6.2.3 Pipeline類 121
6.3 多項式特征 122
6.3.1 生成數(shù)據(jù)集 122
6.3.2 添加多項式特征 123
6.3.3 應(yīng)用實例 124
6.4 核函數(shù) 125
6.4.1 常用核函數(shù) 125
6.4.2 多項式核函數(shù) 125
6.4.3 高斯核函數(shù) 126
第7章 決策樹 128
7.1 決策樹原理 128
7.1.1 熵 128
7.1.2 信息增益 129
7.1.3 計算實例 129
7.1.4 基尼指數(shù) 130
7.2 DecisionTreeClassifier類 131
7.2.1 基本用法 131
7.2.2 展示決策樹 131
7.3 決策樹調(diào)參 133
7.3.1 GridSearchCV類 134
7.3.2 搜索結(jié)果 134
7.3.3 最大深度 135
第8章 聚類分析 136
8.1 聚類的基本概念 136
8.1.1 距離 136
8.1.2 K均值算法的核心思想 137
8.1.3 輪廓系數(shù) 137
8.2 K均值算法 137
8.2.1 生成數(shù)據(jù)集 137
8.2.2 KMeans類 138
8.2.3 樣本點到中心點的距離 140
8.2.4 輪廓系數(shù) 140
8.2.5 最佳中心點個數(shù) 141
第9章 集成學(xué)習(xí) 143
9.1 集成學(xué)習(xí)原理 143
9.1.1 常用架構(gòu) 143
9.1.2 提升法 144
9.1.3 裝袋法 144
9.1.4 集成方法 144
9.2 隨機森林 145
9.2.1 糖尿病數(shù)據(jù)集 145
9.2.2 分層抽樣 145
9.2.3 RandomForestRegressor 145
9.2.4 特征重要性 146
9.3 BaggingRegressor 147
9.3.1 基本用法 147
9.3.2 參數(shù)說明 147
9.3.3 搜索最佳參數(shù) 147
9.3.4 最佳參數(shù)的效果 148
9.4 梯度提升決策樹 149
9.4.1 房價數(shù)據(jù)集 149
9.4.2 初始參數(shù)集 150
9.4.3 最佳參數(shù) 150
9.4.4 最佳模型 152
9.4.5 增加預(yù)估器數(shù)量 152
第10章 房價預(yù)測 154
10.1 探索數(shù)據(jù) 154
10.1.1 加載數(shù)據(jù) 154
10.1.2 查看空值 155
10.1.3 屬性的直方圖 155
10.1.4 對收入中位數(shù)進行分組 157
10.1.5 分組統(tǒng)計 158
10.1.6 分層抽樣 158
10.2 數(shù)據(jù)可視化與相關(guān)性 160
10.2.1 根據(jù)地理位置展示數(shù)據(jù) 160
10.2.2 相關(guān)關(guān)系 161
10.2.3 相關(guān)系數(shù) 163
10.2.4 3個新屬性 163
10.3 空值的處理 164
10.3.1 列出有NaN的行 165
10.3.2 處理NaN 165
10.3.3 SimpleImputer類 166
10.4 文本屬性與流式處理 167
10.4.1 文本屬性 167
10.4.2 OrdinalEncoder轉(zhuǎn)換器 167
10.4.3 OneHotEncoder類 168
10.4.4 流式處理 169
10.4.5 自定義Pipeline 170
10.4.6 ColumnTransformer 171
10.5 模型選擇 171
10.5.1 分離標簽 171
10.5.2 數(shù)值處理Pipeline 172
10.5.3 線性回歸 173
10.5.4 決策樹 173
10.5.5 隨機森林 174
10.5.6 模型微調(diào) 174
10.5.7 最佳參數(shù)模型 175
第11章 手寫數(shù)字識別 176
11.1 MNIST數(shù)據(jù)集 176
11.1.1 下載數(shù)據(jù)集 176
11.1.2 查看數(shù)據(jù)集 176
11.1.3 繪制數(shù)字圖像 177
11.1.4 不易辨認的數(shù)字圖像 178
11.1.5 識別數(shù)字5的分類器 179
11.2 精度與召回率 180
11.2.1 類型轉(zhuǎn)換 180
11.2.2 二類分類器 180
11.2.3 非5分類器 181
11.2.4 混淆矩陣 181
11.2.5 計算精度與召回率 182
11.2.6 F1分數(shù) 183
11.3 閾值分類器 183
11.3.1 分類器評分 184
11.3.2 閾值的用法 184
11.3.3 計算精度與召回率 185
11.3.4 90%精度的分類器 187
11.4 ROC曲線 188
11.4.1 TPR與FPR 188
11.4.2 繪制ROC曲線 188
11.4.3 ROC曲線下的面積 189
11.4.4 RandomForestClassifier 189
11.4.5 比較ROC曲線 190
11.4.6 比較精度與召回率 191
11.4.7 比較F1分數(shù) 192
11.5 多類分類器 192
11.5.1 訓(xùn)練集與測試集 192
11.5.2 RandomForestClassifier 193
11.5.3 標準縮放 194
11.5.4 混淆矩陣 195
11.5.5 突出錯誤率 196