本書通過通俗易懂的語言、豐富的圖示和生動的實例,撥開了籠罩在機器學習上方復雜的數學“烏云”,讓讀者以較低的代價和門檻入門機器學習。本書共分為11章,介紹了在Python環境下學習scikit—learn機器學習框架的相關知識,涵蓋的主要內容有機器學習概述、Python機器學習軟件包、機器學習理論基礎、k—近鄰算法、線性回歸算法、邏輯回歸算法、決策樹、支持向量機、樸素貝葉斯算法、PCA算法和k—均值算法等。本書適合有一定編程基礎的讀者閱讀,尤其適合想從事機器學習、人工智能、深度學習及機器人相關技術的程序員和愛好者閱讀。另外,相關院校和培訓機構也可以將本書作為教材使用。
機器學習是近年來非常熱門的方向,然而普通的程序員想要轉行機器學習卻困難重重;叵肫饋恚P者在剛開始學習機器學習時,一上來就被一大堆數學公式和推導過程所折磨,這樣的日子至今還歷歷在目。當時筆者也覺得機器學習是個門檻非常高的學科。但實際上,在機器學習的從業人員里,究竟有多少人需要從頭去實現一個算法?又有多少人有機會去發明一個新算法?從一開始就被細節和難點纏住,這嚴重打擊了想進入機器學習領域新人的熱情和信心。
本書就是要解決這個問題。筆者希望盡量通過通俗的語言去描述算法的工作原理,并使用scikit-learn工具包演示算法的使用,以及算法所能解決的問題,給那些非科班出身而想半路“殺進”人工智能領域的程序員,以及對機器學習感興趣的人提供一本入門的書籍。
當然,這里不是否認數學和算法實現的重要性,畢竟它們是人工智能領域的基礎學科方向。萬事開頭難,只有打開了一扇門,才能發現一個新的五彩繽紛的世界。在這個世界里,我們可以吃到新口味的面包,也能認識那些做面包給別人吃的人。希望這本書能幫助讀者打開機器學習的這扇門。
本書特色
1.用通俗易懂的語言介紹機器學習算法的原理,符合初學者的認知規律
本書講解時首先會用通俗易懂的語言介紹常用的機器學習算法,幫助讀者直觀地理解每個算法的基本原理,然后用大量的圖示及實例介紹如何使用scikit-learn工具包解決現實生活中的機器學習問題。這種由淺入深、循序漸進的講授方式,完全遵循了初學者對機器學習算法的認知規律。
2.豐富的示例圖片,可以幫助讀者更加直觀地理解算法背后的原理
機器學習以其背后復雜的數學原理及異常復雜的算法推導和證明過程而嚇退了一大批讀者。一圖勝千言,本書給出了大量的圖示,用圖片的方式形象地介紹了算法的基本原理,讓讀者對算法有更加直觀的理解。這樣就把復雜的數學公式和冗長的文字描述濃縮到一張張圖片中,有效地降低了學習的門檻。
3.實例豐富,可以幫助讀者使用機器學習算法解決工程應用問題
手寫識別程序怎么做?怎么實現人臉識別系統?怎么過濾垃圾郵件?電子商務網站上猜你喜歡的商品是什么原理?怎么實現的?電影網站怎樣去推薦符合用戶喜好的電影?怎么利用機器學習對消費者的特性進行細分,從而更好地服務好各細分市場的消費者?銀行怎樣去檢測用戶的信用卡可能被盜了?通過閱讀本書,讀者將了解到這些復雜問題背后的原理,甚至你都可以自己解決這些問題。
本書內容介紹
第1章機器學習介紹,涵蓋了機器學習的定義、應用場景及機器學習的分類,并通過一個簡單的示例,讓讀者了解機器學習的典型步驟和機器學習領域的一些專業術語。
第2章Python機器學習軟件包,介紹了scikit-learn開發環境的搭建步驟,以及IPython、Numpy、Pandas和Matplotlib等軟件包的基礎知識,并通過一個scikit-learn機器學習實例介紹了scikit-learn的一般性原理和通用規則。
第3章機器學習理論基礎,介紹了算法模型性能評估的指標和評估方法等理論基礎。本章內容是本書最關鍵的理論基礎知識,對理解本書其他章節的內容非常重要。
第4章k-近鄰算法,介紹了一個有監督的機器學習算法,即k-近鄰算法。該算法可以解決分類問題,也可以解決回歸問題。
第5章線性回歸算法,介紹了單變量線性回歸算法和多變量線性回歸算法的原理,以及通過梯度下降算法迭代求解線性回歸模型,并給出一個房價預測的實例。另外,本章對成本函數和使用線性回歸算法對數據進行擬合也做了講解。
第6章邏輯回歸算法,介紹了邏輯回歸算法的原理及成本函數。在本章中主要解決的問題有:邏輯回歸算法的原理是什么?怎樣使用梯度下降算法解決迭代求解邏輯回歸算法的模型參數?什么是正則化?正則化能解決什么問題?L1范數和 L2 范數作為模型正則項有什么區別?如何使用邏輯回歸算法解決乳腺癌檢測問題?
第7章決策樹,主要介紹了決策樹的算法原理和算法參數,并給出了一個預測實例,最后對集合算法做了必要講解。
第8章支持向量機,主要介紹了支持向量機的基本算法原理及常用核函數,并給出了用支持向量機來解決乳腺癌檢測問題的實例。
第9章樸素貝葉斯算法,首先從貝葉斯定理談起,引入了樸素貝葉斯分類法;然后通過一個簡單的例子說明了算法的基本原理;接著介紹了概率分布的概念及幾種典型的概率分布;最后通過一個文檔分類實例來說明樸素貝葉斯算法的應用。
第10章PCA算法,首先介紹了PCA的算法原理;然后通過一個簡單的模擬運算過程幫助讀者理解該算法的原理和實現步驟;最后介紹了PCA算法背后的物理含義。本章在講解的過程中順便給讀者推薦了一些優秀的線性代數資源,供讀者參考。
第11章k-均值算法,首先介紹了該算法的基本原理及關鍵迭代步驟;然后通過一個簡單的例子,介紹了如何使用scikit-learn中的k-均值算法解決聚類問題;最后使用一個文本聚類分析的例子介紹了k-均值算法的應用,并介紹了典型的無監督機器學習算法的性能評估指標。
如何更好地使用本書
如果你只是好奇機器學習背后的原
目錄
前言
第1章 機器學習介紹1
1.1 什么是機器學習1
1.2 機器學習有什么用2
1.3 機器學習的分類3
1.4 機器學習應用開發的典型步驟4
1.4.1 數據采集和標記4
1.4.2 數據清洗5
1.4.3 特征選擇5
1.4.4 模型選擇5
1.4.5 模型訓練和測試5
1.4.6 模型性能評估和優化5
1.4.7 模型使用6
1.5 復習題6
第2章 Python機器學習軟件包7
2.1 開發環境搭建7
2.2 IPython簡介8
2.2.1 IPython基礎8
2.2.2 IPython圖形界面13
2.3 Numpy簡介15
2.3.1 Numpy數組15
2.3.2 Numpy運算19
2.4 Pandas簡介32
2.4.1 基本數據結構32
2.4.2 數據排序34
2.4.3 數據訪問34
2.4.4 時間序列36
2.4.5 數據可視化36
2.4.6 文件讀寫38
2.5 Matplotlib簡介38
2.5.1 圖形樣式38
2.5.2 圖形對象40
2.5.3 畫圖操作46
2.6 scikit-learn簡介51
2.6.1 scikit-learn示例51
2.6.2 scikit-learn一般性原理和通用規則55
2.7 復習題56
2.8 拓展學習資源57
第3章 機器學習理論基礎58
3.1 過擬合和欠擬合58
3.2 成本函數59
3.3 模型準確性60
3.3.1 模型性能的不同表述方式61
3.3.2 交叉驗證數據集61
3.4 學習曲線62
3.4.1 實例:畫出學習曲線62
3.4.2 過擬合和欠擬合的特征65
3.5 算法模型性能優化65
3.6 查準率和召回率66
3.7 F1 Score67
3.8 復習題67
第4章 k-近鄰算法69
4.1 算法原理69
4.1.1 算法優缺點69
4.1.2 算法參數70
4.1.3 算法的變種70
4.2 示例:使用k-近鄰算法進行分類70
4.3 示例:使用k-近鄰算法進行回歸擬合72
4.4 實例:糖尿病預測74
4.4.1 加載數據74
4.4.2 模型比較75
4.4.3 模型訓練及分析77
4.4.4 特征選擇及數據可視化78
4.5 拓展閱讀80
4.5.1 如何提高k-近鄰算法的運算效率80
4.5.2 相關性測試80
4.6 復習題81
第5章 線性回歸算法83
5.1 算法原理83
5.1.1 預測函數83
5.1.2 成本函數84
5.1.3 梯度下降算法84
5.2 多變量線性回歸算法86
5.2.1 預測函數86
5.2.2 成本函數87
5.2.3 梯度下降算法88
5.3 模型優化89
5.3.1 多項式與線性回歸89
5.3.2 數據歸一化89
5.4 示例:使用線性回歸算法擬合正弦函數90
5.5 示例:測算房價92
5.5.1 輸入特征92
5.5.2 模型訓練93
5.5.3 模型優化94
5.5.4 學習曲線95
5.6 拓展閱讀96
5.6.1 梯度下降迭代公式推導96
5.6.2 隨機梯度下降算法96
5.6.3 標準方程97
5.7 復習題97
第6章 邏輯回歸算法98
6.1 算法原理98
6.1.1 預測函數98
6.1.2 判定邊界99
6.1.3 成本函數100
6.1.4 梯度下降算法102
6.2 多元分類102
6.3 正則化103
6.3.1 線性回歸模型正則化103
6.3.2 邏輯回歸模型正則化104
6.4 算法參數104
6.5 實例:乳腺癌檢測106
6.5.1 數據采集及特征提取106
6.5.2 模型訓練108
6.5.3 模型優化110
6.5.4 學習曲線111
6.6 拓展閱讀113
6.7 復習題114
第7章 決策樹115
7.1 算法原理115
7.1.1 信息增益116
7.1.2 決策樹的創建119
7.1.3 剪枝算法120
7.2 算法參數121
7.3 實例:預測泰坦尼克號幸存者122
7.3.1 數據分析122
7.3.2 模型訓練123
7.3.3 優化模型參數124
7.3.4 模型參數選擇工具包127
7.4 拓展閱讀130
7.4.1 熵和條件熵130
7.4.2 決策樹的構建算法130
7.5 集合算法131
7.5.1 自助聚合算法Bagging131
7.5.2 正向激勵算法boosting131
7.5.3 隨機森林132
7.5.4 ExtraTrees算法133
7.6 復習題133
第8章 支持向量機134
8.1 算法原理134
8.1.1 大間距分類算法134
8.1.2 松弛系數136
8.2 核函數138
8.2.1 最簡單的核函數138
8.2.2 相似性函數140
8.2.3 常用的核函數141
8.2.4 核函數的對比142
8.3 scikit-learn里的SVM144
8.4 實例:乳腺癌檢測146
8.5 復習題149
第9章 樸素貝葉斯算法151
9.1 算法原理151
9.1.1 貝葉斯定理151
9.1.2 樸素貝葉斯分類法152
9.2 一個簡單的例子153
9.3 概率分布154
9.3.1 概率統計的基本概念154
9.3.2 多項式分布155
9.3.3 高斯分布158
9.4 連續值的處理159
9.5 實例:文檔分類160
9.5.1 獲取數據集160
9.5.2 文檔的數學表達161
9.5.3 模型訓練163
9.5.4 模型評價165
9.6 復習題167
第10章 PCA算法168
10.1 算法原理168
10.1.1 數據歸一化和縮放169
10.1.2 計算協方差矩陣的特征向量169
10.1.3 數據降維和恢復170
10.2 PCA 算法示例171
10.2.1 使用Numpy模擬PCA計算過程171
10.2.2 使用sklearn進行PCA降維運算173
10.2.3 PCA的物理含義174
10.3 PCA 的數據還原率及應用175
10.3.1 數據還原率175
10.3.2 加快監督機器學習算法的運算速度176
10.4 實例:人臉識別176
10.4.1 加載數據集176
10.4.2 一次失敗的嘗試179
10.4.3 使用PCA來處理數據集182
10.4.4 最終結果185
10.5 拓展閱讀189
10.6 復習題189
第11章 k-均值算法190
11.1 算法原理190
11.1.1 k-均值算法成本函數191
11.1.2 隨機初始化聚類中心點191
11.1.3 選擇聚類的個數192
11.2 scikit-learn里的k-均值算法192
11.3 使用k-均值對文檔進行聚類分析195
11.3.1 準備數據集195
11.3.2 加載數據集196
11.3.3 文本聚類分析197
11.4 聚類算法性能評估200
11.4.1 Adjust Rand Index200
11.4.2 齊次性和完整性201
11.4.3 輪廓系數203
11.5 復習題204
后記205