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