本書通過對大量實際案例的分析以及部分相關理論的適當解讀,幫助讀者使用Python語言進行程序設計,同時能夠利用Python語言實現(xiàn)基礎的機器學習算法。
全書包含三大部分:機器學習概念和編程基礎、數(shù)據(jù)預處理基礎、機器學習方法及案例,每一部分都結(jié)合大量實際例程進行解讀。本書共13章,具體內(nèi)容包括機器學習概述、Python機器學習基礎庫、數(shù)據(jù)預處理、K近鄰算法、樸素貝葉斯、決策樹、隨機森林、AdaBoost模型、支持向量機、人工神經(jīng)網(wǎng)絡、K均值聚類、財政收入影響因素分析及預測案例、偷稅漏稅行為識別分析案例。書末給出兩個附錄,分別為Python的安裝與環(huán)境配置和Python開發(fā)工具的安裝。
本書適合作為電子信息類專業(yè)的教材,希望學習機器學習技術的讀者均可使用。學習本書需要具備Python程序設計基礎知識。
★本書免費提供書中程序代碼和部分數(shù)據(jù)集、PPT及部分案例講解視頻、Python的安裝與環(huán)境配置、Python開發(fā)工具的安裝等資源,需要的讀者可以掃描扉頁二維碼或從出版社網(wǎng)站查看。
自從AlphaGo在2016年3月戰(zhàn)勝了人類圍棋頂尖高手之后,人工智能、機器學習、深度學習等詞匯就逐漸進入了大眾的視野,機器學習也成為了學術界和工業(yè)界都極其關注的技術。機器學習是計算機研究領域的一個重要分支,是人工智能的核心基礎,也是人工智能領域最具活力的研究方向之一。
機器學習的算法研究需要具備一定的理論基礎,而其算法的產(chǎn)業(yè)應用又需要一定的編程基礎。面對機器學習,不少人都想嘗試和體驗其神奇之處,但又苦于其較高的門檻而不知如何下手。盡管已經(jīng)有許多介紹機器學習的優(yōu)秀著作,但它們大多要么過于偏重理論,要么過于偏重應用,要么過于“厚重”,讓人望而生畏。本書致力于將理論與實踐相結(jié)合,在盡量通俗、形象地講述理論知識的同時,利用Python這一簡單、易學的編程語言進行機器學習算法的實踐和應用。
鑒于上述寫作思路,本書共設計了13章,主要包括以下內(nèi)容:
第1章為機器學習基礎,簡要介紹機器學習的概念、應用、研究方法等;
第2章和第3章為Python應用于機器學習研究的基礎內(nèi)容,主要介紹Python中常用于機器學習的基本庫以及機器學習應用中的數(shù)據(jù)預處理方法;
第4章到第11章為機器學習算法和基本實踐,分別從分類任務和聚類任務兩大方面介紹了八種常見的機器學習模型,每個模型除了介紹基本原理之外,都通過具體的案例介紹了算法的應用,方便讀者復現(xiàn)練習;
第12章和第13章提供了兩個完整的、相對復雜的案例,進一步說明機器學習方法的使用。
書中所有案例均來自于實際工程應用項目或者國際開源的比賽項目,對于科學研究和行業(yè)發(fā)展有一定的參考價值。
本書由西華大學電氣與電子信息學院郭奕老師擔任主編,郭老師主要編寫了本書的第1、2、3、4、5、9、10、11章,東莞理工學院計算機科學與技術學院潘曉衡老師編寫了本書的第6、7、8章,肖海林工程師編寫了本書的第12、13章。本書中部分經(jīng)典案例使用了開源數(shù)據(jù)集和開源代碼。感謝王曉蘭、湯微杰、周鑫、熊雪軍、周永平同學在書稿校驗和代碼驗證階段所做的大量工作,同時也感謝在本書編寫過程中給予我們幫助的其他朋友們。
本書相關的教學資料和程序源代碼等可以在西安電子科技大學出版社的網(wǎng)站上下載。書中存在的不當和錯誤之處,敬請讀者批評指正,我們不勝感謝。這里特留下作者郵箱以接受批評指正和進行相關討論:lpngy@vip.163.com。
編 者?
2022年4月
第1章 機器學習概述 1
1.1 什么是機器學習 2
1.2 機器學習的應用 4
1.2.1 圖像和計算機視覺 4
1.2.2 日常生活及消費 8
1.2.3 金融領域 9
1.2.4 醫(yī)療領域 9
1.2.5 自然語言處理 10
1.2.6 安全和異常行為監(jiān)測 12
1.2.7 工業(yè)和商業(yè)領域 13
1.2.8 娛樂領域 14
1.3 機器學習的主要研究內(nèi)容 15
1.4 機器學習問題的常規(guī)處理方法 16
1.4.1 開發(fā)機器學習應用的
一般步驟 16
1.4.2 選擇合適的算法 18
1.4.3 使用Python開發(fā)機器
學習應用 19
1.4.4 機器學習模型的評價 21
1.5 機器學習、模式識別、數(shù)據(jù)
挖掘和人工智能的關系 24
本章小結(jié) 26
思考題 26
第2章 Python機器學習基礎庫 27
2.1 Numpy 28
2.1.1 Numpy庫的安裝 28
2.1.2 Numpy庫的導入 28
2.1.3 創(chuàng)建數(shù)組 29
2.1.4 查詢數(shù)組類型 29
2.1.5 數(shù)組的其他創(chuàng)建方式 29
2.1.6 數(shù)組元素的存取 30
2.1.7 ufunc運算 30
2.1.8 矩陣的運算 30
2.2 Pandas 30
2.2.1 Pandas的安裝 31
2.2.2 Pandas的導入 31
2.2.3 Series 31
2.2.4 DataFrame 32
2.3 Matplotlib 32
2.3.1 Matplotlib的安裝 32
2.3.2 Matplotlib的導入 32
2.3.3 基本繪圖命令plot 33
2.3.4 繪制多窗口圖形 35
2.3.5 文本注釋 36
2.4 Scipy 37
2.4.1 Scipy的安裝 37
2.4.2 Scipy的導入 38
2.4.3 最小二乘法 38
2.4.4 非線性方程求解 40
2.5 Scikit-Learn 40
2.5.1 Scikit-Learn的安裝 41
2.5.2 Scikit-Learn的數(shù)據(jù)集 41
2.6 TensorFlow 42
2.6.1 TensorFlow的安裝 42
2.6.2 TensorFlow的使用 43
2.7 PyTorch 44
2.8 PaddlePaddle 44
本章小結(jié) 45
思考題 45
第3章 數(shù)據(jù)預處理 46
3.1 數(shù)據(jù)預處理概述 47
3.2 數(shù)據(jù)預分析 47
3.2.1 統(tǒng)計特性分析 48
3.2.2 數(shù)據(jù)質(zhì)量分析 49
3.3 數(shù)據(jù)清理 51
3.3.1 異常值處理 51
3.3.2 缺失值處理 51
3.4 數(shù)據(jù)集成 53
3.4.1 實體識別 53
3.4.2 冗余屬性識別 54
3.5 數(shù)據(jù)變換 54
3.5.1 簡單函數(shù)變換 54
3.5.2 歸一化 54
3.5.3 連續(xù)屬性離散化 55
3.6 數(shù)據(jù)規(guī)約 58
3.6.1 屬性規(guī)約 58
3.6.2 數(shù)值規(guī)約 60
3.7 Python的主要數(shù)據(jù)預處理函數(shù) 60
本章小結(jié) 61
思考題 61
第4章 K近鄰算法 62
4.1 模型介紹 63
4.1.1 算法概述 63
4.1.2 算法基本原理 63
4.1.3 算法實現(xiàn)代碼 65
4.2 案例一 約會網(wǎng)站配對 66
4.2.1 問題介紹 66
4.2.2 數(shù)據(jù)準備 67
4.2.3 算法實現(xiàn) 70
4.2.4 算法測試 71
4.2.5 算法應用 72
4.3 案例二 手寫數(shù)字識別 73
4.3.1 問題介紹 73
4.3.2 數(shù)據(jù)準備 73
4.3.3 算法實現(xiàn) 74
4.4 案例三 鳶尾花品種識別 76
4.4.1 問題介紹 76
4.4.2 數(shù)據(jù)準備 76
4.4.3 算法實現(xiàn) 78
本章小結(jié) 79
思考題 79
第5章 樸素貝葉斯 80
5.1 模型介紹 81
5.1.1 貝葉斯決策理論基礎 81
5.1.2 使用樸素貝葉斯進行分類 82
5.1.3 樸素貝葉斯分類器的特點 83
5.2 案例四 社區(qū)留言板文本分類 84
5.2.1 案例介紹 84
5.2.2 數(shù)據(jù)準備 84
5.2.3 概率計算 86
5.2.4 算法改進 87
5.2.5 改進后的樸素貝葉斯
分類器應用 89
5.3 案例五 舊金山犯罪分類預測 90
5.3.1 案例介紹 90
5.3.2 數(shù)據(jù)準備 91
5.3.3 模型實現(xiàn) 92
本章小結(jié) 93
思考題 93
第6章 決策樹 94
6.1 模型介紹 95
6.1.1 決策樹概述 95
6.1.2 決策樹數(shù)學基礎 100
6.1.3 決策樹算法 102
6.2 案例六 魚類和非魚類判定 103
6.2.1 案例介紹 103
6.2.2 案例實現(xiàn) 104
6.3 案例七 貸款權限判定 114
6.3.1 案例介紹 114
6.3.2 案例實現(xiàn) 115
本章小結(jié) 119
思考題 119
第7章 隨機森林 121
7.1 模型介紹 122
7.1.1 隨機森林的歷史 122
7.1.2 隨機森林原理 122
7.1.3 構建隨機森林 123
7.1.4 隨機森林模型的性能評估 124
7.1.5 隨機森林的應用 125
7.1.6 隨機森林的Python常用庫 125
7.2 案例八 聲吶信號分類 126
7.2.1 案例介紹 126
7.2.2 案例實現(xiàn) 127
7.3 案例九 泰坦尼克號幸存者預測 132
7.3.1 案例介紹 132
7.3.2 案例實現(xiàn) 133
本章小結(jié) 139
思考題 139
第8章 AdaBoost模型 140
8.1 模型介紹 141
8.1.1 AdaBoost原理 141
8.1.2 AdaBoost的算法流程 142
8.1.3 AdaBoost的Python常用庫 144
8.2 案例十 馬疝病預測 146
8.2.1 案例介紹 146
8.2.3 案例實現(xiàn) 146
8.3 案例十一 學生課程成績預測 149
8.3.1 案例介紹 149
8.3.2 案例實現(xiàn) 150
本章小結(jié) 154
思考題 154
第9章 支持向量機 155
9.1 線性支持向量機 156
9.1.1 間隔與支持向量 156
9.1.2 對偶問題 158
9.1.3 SMO算法 159
9.2 非線性分類 170
9.2.1 核函數(shù)概述 170
9.2.2 高斯徑向基核函數(shù) 171
9.3 案例十二 手寫數(shù)字識別 175
本章小結(jié) 179
思考題 179
第10章 人工神經(jīng)網(wǎng)絡 180
10.1 從感知機到多層感知機 181
10.1.1 神經(jīng)元和感知機 181
10.1.2 多層感知機 183
10.2 激活函數(shù)和損失函數(shù) 184
10.2.1 激活函數(shù) 184
10.2.2 損失函數(shù) 186
10.3 反向傳播算法 187
10.4 案例十三 手寫數(shù)字識別 188
10.4.1 數(shù)據(jù)準備 188
10.4.2 網(wǎng)絡配置 189
10.4.3 模型訓練 190
10.4.4 模型使用 193
本章小結(jié) 195
思考題 195
第11章 K均值聚類 196
11.1 模型介紹 197
11.1.1 模型概述 197
11.1.2 基本的K均值聚類算法 197
11.1.3 K均值聚類算法的代碼實現(xiàn) 198
11.1.4 二分K均值算法 202
11.2 案例十四 居民家庭消費調(diào)查 204
11.2.1 案例介紹 204
11.2.2 案例實現(xiàn) 205
11.3 案例十五 物流公司最佳
配送路徑問題 207
本章小結(jié) 210
思考題 210
第12章 財政收入影響因素分析及
預測案例 212
12.1 案例引入 213
12.2 模型介紹 213
12.3 案例操作 215
12.3.1 案例步驟 215
12.3.2 案例實現(xiàn) 215
本章小結(jié) 221
思考題 221
第13章 偷稅漏稅行為識別分析案例 222
13.1 案例引入 223
13.2 模型介紹 223
13.3 案例操作 224
13.3.1 案例步驟 224
13.3.2 案例實現(xiàn) 224
本章小結(jié) 232
思考題 232
附錄A Python的安裝與環(huán)境配置 233
A.1 Python的官方安裝 233
A.1.1 Python的官方下載 233
A.1.2 Python的官方安裝 235
A.1.3 手動配置環(huán)境變量 239
A.2 Anaconda的安裝 242
A.2.1 Anaconda的下載 242
A.2.2 Anaconda的安裝 244
A.2.3 手動配置Anaconda的環(huán)境
?變量 250
A.2.4 Anaconda的運行 250
附錄B Python開發(fā)工具的安裝 252
B.1 Jupyter Notebook的安裝 252
B.1.1 Jupyter Notebook的下載和
安裝 252
B.1.2 Jupyter Notebook的運行 255
B.2 PyCharm的安裝 257
B.2.1 PyCharm的下載 257
B.2.2 PyCharm的安裝 259