- Python機(jī)器學(xué)習(xí)(原書第3版)
- (美)塞巴斯蒂安·拉施卡 瓦希德·米爾賈利利
- 3683字
- 2021-06-11 16:13:33
前言
通過(guò)新聞和社交媒體的報(bào)道,你可能已經(jīng)了解到,機(jī)器學(xué)習(xí)已成為當(dāng)代最激動(dòng)人心的技術(shù)之一。像谷歌、Facebook、蘋果、亞馬遜和IBM這樣的大公司基于各自的考慮,已經(jīng)在機(jī)器學(xué)習(xí)的研究和應(yīng)用方面投入了巨資。機(jī)器學(xué)習(xí)似乎已經(jīng)成為我們這個(gè)時(shí)代的流行詞,但這絕不是曇花一現(xiàn)。這個(gè)激動(dòng)人心的領(lǐng)域?yàn)槲覀冮_啟了許多新的可能性,已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡囊徊糠帧V悄苁謾C(jī)的語(yǔ)音助手、為客戶推薦合適的產(chǎn)品、防止信用卡欺詐、過(guò)濾垃圾郵件,以及檢測(cè)和診斷疾病等都是明證,類似的應(yīng)用層出不窮。
機(jī)器學(xué)習(xí)入門
如果有志從事機(jī)器學(xué)習(xí)方面的工作,想更好地解決問題或開展機(jī)器學(xué)習(xí)方面的研究,那么本書就是為你而備。然而,對(duì)新手而言,機(jī)器學(xué)習(xí)背后的理論、概念可能艱深晦澀,但近幾年已經(jīng)出版了許多機(jī)器學(xué)習(xí)方面的著作,這有助于大家通過(guò)研發(fā)強(qiáng)大的機(jī)器學(xué)習(xí)算法走上機(jī)器學(xué)習(xí)之路。
理論與實(shí)踐相結(jié)合
通過(guò)實(shí)際的機(jī)器學(xué)習(xí)應(yīng)用示例來(lái)接觸實(shí)際代碼是深入該領(lǐng)域的好方法。此外,具體的示例也有助于通過(guò)把所學(xué)的材料直接付諸行動(dòng)來(lái)闡明寬泛的概念。然而請(qǐng)記住,更強(qiáng)大的力量意味著更重大的責(zé)任!
除了提供使用Python編程語(yǔ)言和基于Python的機(jī)器學(xué)習(xí)庫(kù)進(jìn)行機(jī)器學(xué)習(xí)的實(shí)踐經(jīng)驗(yàn)之外,本書還將介紹機(jī)器學(xué)習(xí)算法背后的數(shù)學(xué)概念,這些對(duì)成功地應(yīng)用機(jī)器學(xué)習(xí)至關(guān)重要。因此,本書與一般純粹的實(shí)踐手冊(cè)有所不同,書中不僅會(huì)對(duì)有關(guān)機(jī)器學(xué)習(xí)概念的必要細(xì)節(jié)進(jìn)行討論,而且還將對(duì)機(jī)器學(xué)習(xí)算法的工作原理、使用方法,以及如何避免最常見的陷阱(最為重要)做出直觀且翔實(shí)的解釋。
為什么要選擇Python
在深入機(jī)器學(xué)習(xí)領(lǐng)域之前,請(qǐng)先回答一個(gè)最重要的問題:“為什么要選擇Python?”答案很簡(jiǎn)單:Python功能強(qiáng)大且易于取得。Python已經(jīng)成為數(shù)據(jù)科學(xué)最常用的編程語(yǔ)言,因?yàn)樗粌H可以讓我們忘記編程的冗長(zhǎng)乏味,而且為我們提供了可以把想法落地、把概念直接付諸行動(dòng)的環(huán)境。
探索機(jī)器學(xué)習(xí)領(lǐng)域
如果在谷歌專業(yè)網(wǎng)站以“機(jī)器學(xué)習(xí)”作為關(guān)鍵詞進(jìn)行搜索,可能會(huì)找到325萬(wàn)個(gè)出版物。當(dāng)然,我們無(wú)法對(duì)過(guò)去60年來(lái)所出現(xiàn)的各種不同算法和應(yīng)用逐一進(jìn)行考證。然而,本書將開啟一個(gè)激動(dòng)人心的旅程,它將涵蓋所有重要的主題和概念,讓你在這些領(lǐng)域能夠捷足先登。如果你發(fā)現(xiàn)本書所提供的知識(shí)還不足以解渴,那么沒關(guān)系,你還可以利用本書所引用的其他有價(jià)值的許多資源來(lái)追蹤該領(lǐng)域的重要突破。
我們認(rèn)為,對(duì)機(jī)器學(xué)習(xí)的研究可以幫助我們成為更好的科學(xué)家、思想家和問題解決者。本書將與你分享這些知識(shí)。要獲得知識(shí)就要學(xué)習(xí),關(guān)鍵在于保持熱情,實(shí)踐出真知。
前面的路或許崎嶇不平,有些主題可能頗具挑戰(zhàn)性,但希望你能抓住這個(gè)機(jī)會(huì),更多地思考本書所帶來(lái)的回報(bào)。請(qǐng)記住,我們將共同踏上這段旅程,幫助你掌握許多強(qiáng)大的武器,讓你以數(shù)據(jù)驅(qū)動(dòng)的方式來(lái)解決最棘手的問題。
本書的目標(biāo)讀者
如果你已經(jīng)詳細(xì)研究了機(jī)器學(xué)習(xí)方面的理論,那么本書可以教你如何把知識(shí)付諸實(shí)踐。如果你以前使用過(guò)機(jī)器學(xué)習(xí)技術(shù),想要更加深入地了解其工作原理,那么本書也是為你而寫的。
如果你是機(jī)器學(xué)習(xí)領(lǐng)域的新手,那么不必?fù)?dān)心,你更有理由為閱讀本書而感到興奮!我保證機(jī)器學(xué)習(xí)將會(huì)改變你解決問題的思路,并讓你看到如何通過(guò)釋放數(shù)據(jù)的力量來(lái)解決問題。如果你想了解如何開始用Python來(lái)回答有關(guān)數(shù)據(jù)方面的關(guān)鍵問題,那么請(qǐng)閱讀本書。無(wú)論是想從零開始,還是想擴(kuò)展自己已有的數(shù)據(jù)科學(xué)知識(shí),本書都是必不可少且不可忽視的資源。
本書內(nèi)容
第1章介紹用于解決不同問題的主要機(jī)器學(xué)習(xí)子領(lǐng)域。另外,還將討論創(chuàng)建典型的機(jī)器學(xué)習(xí)模型構(gòu)建流水線的基本步驟,從而形成貫穿后續(xù)各章的脈絡(luò)。
第2章追溯機(jī)器學(xué)習(xí)的起源,介紹二元感知分類器和自適應(yīng)線性神經(jīng)元。還會(huì)簡(jiǎn)單介紹模式分類的基本原理,同時(shí)關(guān)注算法優(yōu)化和機(jī)器學(xué)習(xí)的交互。
第3章描述機(jī)器學(xué)習(xí)的基本分類算法,并使用最流行、最全面的開源機(jī)器學(xué)習(xí)軟件庫(kù)之一scikit-learn提供實(shí)際示例。
第4章討論如何解決未處理數(shù)據(jù)集中最常見的問題,如數(shù)據(jù)缺失。也會(huì)討論用來(lái)識(shí)別數(shù)據(jù)集中信息量最大的特征的幾種方法,并教你如何處理不同類型的變量以作為機(jī)器學(xué)習(xí)算法的適當(dāng)輸入。
第5章描述在減少數(shù)據(jù)集中特征數(shù)量的同時(shí)保留大部分有用和具有可識(shí)別性信息的基本技術(shù)。討論基于主成分分析的標(biāo)準(zhǔn)降維方法,并將其與監(jiān)督學(xué)習(xí)和非線性變換技術(shù)進(jìn)行比較。
第6章討論在預(yù)測(cè)模型的性能評(píng)價(jià)中該做什么和不該做什么。此外,還將討論模型評(píng)估的不同度量以及優(yōu)化機(jī)器學(xué)習(xí)算法的技術(shù)。
第7章介紹有效結(jié)合多種學(xué)習(xí)算法的不同概念。講解如何構(gòu)建專家小組來(lái)克服個(gè)別學(xué)習(xí)者的弱點(diǎn),從而產(chǎn)生更準(zhǔn)確、更可靠的預(yù)測(cè)。
第8章討論將文本數(shù)據(jù)轉(zhuǎn)換為對(duì)機(jī)器學(xué)習(xí)算法有意義的表達(dá)方式的基本步驟,以根據(jù)文本內(nèi)容預(yù)測(cè)人們的意見。
第9章繼續(xù)使用第8章中的預(yù)測(cè)模型,并介紹使用嵌入式機(jī)器學(xué)習(xí)模型開發(fā)Web應(yīng)用的基本步驟。
第10章討論根據(jù)目標(biāo)變量和響應(yīng)變量之間的線性關(guān)系建模,從而進(jìn)行連續(xù)預(yù)測(cè)的基本技術(shù)。在介紹不同的線性模型之后,還將討論多項(xiàng)式回歸和基于樹的建模方法。
第11章將焦點(diǎn)轉(zhuǎn)移到機(jī)器學(xué)習(xí)的其他子領(lǐng)域,即無(wú)監(jiān)督學(xué)習(xí)。用來(lái)自三個(gè)基本聚類家族的算法來(lái)尋找一組擁有一定程度相似性的對(duì)象。
第12章擴(kuò)展基于梯度的優(yōu)化概念,該概念在第2章中介紹過(guò)。還將介紹如何基于常見的反向傳播算法在Python中構(gòu)建強(qiáng)大的多層神經(jīng)網(wǎng)絡(luò)。
第13章基于第12章的知識(shí),為更有效地訓(xùn)練神經(jīng)網(wǎng)絡(luò)提供實(shí)用指南。該章的重點(diǎn)是TensorFlow 2.0,這是一個(gè)開源的Python軟件庫(kù),它允許我們充分利用現(xiàn)代的多核圖形處理器(GPU),通過(guò)對(duì)用戶友好的Keras API,采用相同的構(gòu)件來(lái)構(gòu)建深度神經(jīng)網(wǎng)絡(luò)。
第14章接著第13章的內(nèi)容更詳細(xì)地介紹TensorFlow 2.0更高級(jí)的概念和功能。TensorFlow是一個(gè)龐大且復(fù)雜的軟件庫(kù),該章將逐步探討一些概念,例如將代碼編譯成靜態(tài)圖形以加快執(zhí)行速度并定義可訓(xùn)練的模型參數(shù)。此外,該章還會(huì)提供用TensorFlow的Keras API以及TensorFlow的預(yù)制估計(jì)器訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的其他實(shí)踐經(jīng)驗(yàn)。
第15章介紹卷積神經(jīng)網(wǎng)絡(luò)(CNN)。CNN代表一種特定類型的深度神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu),特別適合用于圖像數(shù)據(jù)集。由于CNN的性能優(yōu)于傳統(tǒng)方法,因此現(xiàn)在已被廣泛用于計(jì)算機(jī)視覺中,在各種圖像識(shí)別任務(wù)方面獲得了非常優(yōu)秀的結(jié)果。在該章中,你將學(xué)習(xí)如何將卷積層用作圖像分類的強(qiáng)大的特征提取器。
第16章介紹深度學(xué)習(xí)的另外一種常用的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu),它特別適合處理文本序列數(shù)據(jù)和時(shí)間序列數(shù)據(jù)。作為熱身練習(xí),在該章中,我們應(yīng)用不同的循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)電影評(píng)論的情感。然后將學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)如何從書中提取信息,以生成全新的文本。
第17章介紹一種常用的神經(jīng)網(wǎng)絡(luò)對(duì)抗訓(xùn)練機(jī)制,可用于生成逼真的新圖像。該章首先簡(jiǎn)要地介紹自動(dòng)編碼器,這是一種可用于數(shù)據(jù)壓縮的特定類型的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)。然后展示如何將自動(dòng)編碼器的解碼器部分與第二個(gè)神經(jīng)網(wǎng)絡(luò)相結(jié)合,以區(qū)分真實(shí)圖像和合成圖像。通過(guò)讓兩個(gè)神經(jīng)網(wǎng)絡(luò)在對(duì)抗性訓(xùn)練中相互競(jìng)爭(zhēng)的方法,實(shí)現(xiàn)用于生成新的手寫數(shù)字的生成對(duì)抗網(wǎng)絡(luò)。最后,在介紹生成對(duì)抗網(wǎng)絡(luò)的基本概念之后,介紹諸如Wasserstein距離指標(biāo)等可以提高對(duì)抗性訓(xùn)練穩(wěn)定性的方法。
第18章討論常用于訓(xùn)練機(jī)器人和其他自主系統(tǒng)的機(jī)器學(xué)習(xí)子類別。該章首先介紹強(qiáng)化學(xué)習(xí)(RL)的基礎(chǔ)知識(shí),讓你熟悉智能體與環(huán)境的交互、強(qiáng)化學(xué)習(xí)系統(tǒng)的獎(jiǎng)勵(lì)過(guò)程,以及從經(jīng)驗(yàn)中學(xué)習(xí)的概念。涵蓋基于模型和無(wú)模型兩大類強(qiáng)化學(xué)習(xí)。在介紹完基本算法(如基于蒙特卡羅和基于時(shí)間距離的學(xué)習(xí))之后,我們將動(dòng)手實(shí)現(xiàn)并訓(xùn)練一個(gè)可以使用Q學(xué)習(xí)算法在網(wǎng)格世界環(huán)境里導(dǎo)航的智能體。最后,該章將介紹深度Q學(xué)習(xí)算法,這是使用深度神經(jīng)網(wǎng)絡(luò)的Q學(xué)習(xí)的變體。
閱讀本書需要的材料
要執(zhí)行本書的示例代碼,需要在macOS、Linux或者M(jìn)icrosoft Windows操作系統(tǒng)上安裝Python 3.7.0或更新的版本。本書將持續(xù)使用包括SciPy、NumPy、scikit-learn、Matplotlib和pandas在內(nèi)的Python的科學(xué)計(jì)算軟件庫(kù)。
第1章將為設(shè)置Python環(huán)境及其核心庫(kù)提供指令和有用的提示。我們將逐漸添加更多的軟件庫(kù),另外也會(huì)在不同的章節(jié)中分別提供相應(yīng)的安裝指令,例如第8章的自然語(yǔ)言處理NLTK庫(kù)、第9章的Flask網(wǎng)絡(luò)框架庫(kù),以及從第13章到第18章用于在GPU上高效訓(xùn)練神經(jīng)網(wǎng)絡(luò)的TensorFlow。
下載示例代碼及彩色圖像
本書的示例代碼及彩色圖像可以從http://www.packtpub.com通過(guò)個(gè)人賬號(hào)下載,也可以訪問華章圖書官網(wǎng)http://www.hzbook.com,通過(guò)注冊(cè)并登錄個(gè)人賬號(hào)下載。
你也可以從GitHub網(wǎng)址https://github.com/rasbt/python-machine-learning-book-3rd-edition下載全部的示例代碼。
本書所有代碼也以Jupyter Notebook的格式提供,這可以在本書第1章的代碼文件夾中找到簡(jiǎn)明的指令,其具體位置為https://github.com/rasbt/python-machine-learning-book-3rd-edition/tree/master/ch01#pythonjupyter-notebook。想要了解更多有關(guān)Jupyter Notebook用戶界面的信息,請(qǐng)參考https://jupyter-notebook.readthedocs.io/en/stable/網(wǎng)站上的官方文檔。
盡管我們推薦使用Jupyter Notebook來(lái)執(zhí)行代碼,但是所有的代碼示例仍然會(huì)以Python腳本(例如ch02/ch02.py
)和Jupyter Notebook(例如ch02/ch02.ipynb
)兩種格式提供。另外,推薦閱讀每章附帶的README.md
文件,以了解更多的信息和更新情況(例如https://github.com/rasbt/python-machine-learning-book-3rd-edition/blob/master/ch01/README.md)。
我們也把本書中用到的彩色圖像截屏或者圖表以PDF文件格式提供給讀者。彩色圖像有助于讀者更好地理解輸出中的變化。可以從網(wǎng)站https://static.packt-cdn.com/downloads/9781789955750_ColorImages.pdf下載該文件。
約定
新的術(shù)語(yǔ)和重要的詞用粗體顯示。
在這樣的提示后會(huì)顯示警告或重要注釋。
在這樣的提示后會(huì)顯示提示和竅門。
延伸閱讀
如果你正在考慮從事機(jī)器學(xué)習(xí)工作,或者只想跟上該領(lǐng)域的最新進(jìn)展,我們向你推薦機(jī)器學(xué)習(xí)領(lǐng)域以下領(lǐng)先專家的著作。
- Geoffrey Hinton(http://www.cs.toronto.edu/~hinton/)
- Andrew Ng(http://www.andrewng.org/)
- Yann LeCun(http://yann.lecun.com)
- Juergen Schmidhuber(http://people.idsia.ch/~juergen/)
- Yoshua Bengio(http://www.iro.umontreal.ca/~bengioy/yoshua_en/)
僅舉幾例!最后,你可以從下面這些網(wǎng)站了解作者們所擅長(zhǎng)的內(nèi)容:
https://sebastianraschka.com
http://vahidmirjalili.com.
如果對(duì)本書有任何疑問或者需要一些有關(guān)機(jī)器學(xué)習(xí)的提示,歡迎與我們聯(lián)系。
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- HornetQ Messaging Developer’s Guide
- PHP動(dòng)態(tài)網(wǎng)站程序設(shè)計(jì)
- JavaScript從入門到精通(微視頻精編版)
- ThinkPHP 5實(shí)戰(zhàn)
- Linux C/C++服務(wù)器開發(fā)實(shí)踐
- Gradle for Android
- Android開發(fā)案例教程與項(xiàng)目實(shí)戰(zhàn)(在線實(shí)驗(yàn)+在線自測(cè))
- Raspberry Pi Home Automation with Arduino(Second Edition)
- 愛上micro:bit
- ArcGIS for Desktop Cookbook
- CRYENGINE Game Development Blueprints
- 深入理解BootLoader
- 小程序從0到1:微信全棧工程師一本通
- 大學(xué)計(jì)算機(jī)基礎(chǔ)實(shí)訓(xùn)教程