Python機器學習書籍程式碼庫
重要提示(2017 年 9 月 21 日):
此 GitHub 儲存庫包含第一版Python 機器學習書籍的程式碼範例。如果您正在尋找第二版的程式碼範例,請參閱此儲存庫。
您可以期待 400 頁豐富的有用材料,幾乎是您開始機器學習所需了解的一切……從理論到您可以直接付諸實踐的實際程式碼!這不僅僅是另一本「這就是 scikit-learn 的工作原理」的書。我的目標是解釋所有基本概念,告訴您在最佳實踐和注意事項方面需要了解的所有內容,我們將主要使用 NumPy、scikit-learn 和 Theano 將這些概念付諸實踐。
您不確定這本書是否適合您?請查看前言和前言的摘錄,或查看常見問題部分以獲取更多資訊。
初版,2015 年 9 月 23 日出版
平裝本:454 頁
出版商: Packt Publishing
語言: 英語
ISBN-10: 1783555130
ISBN-13:978-1783555130
Kindle ASIN:B00YSILNL0
德文 ISBN-13:978-3958454224
日本 ISBN-13:978-4844380603
義大利文 ISBN-13:978-8850333974
中文(繁體)ISBN-13:978-9864341405
中文(大陸)ISBN-13:978-7111558804
韓文 ISBN-13:979-1187497035
俄文 ISBN-13:978-5970604090
目錄和程式碼筆記本
只需點擊章節標題旁的ipynb
/ nbviewer
連結即可查看程式碼範例(目前僅 NbViewer 版本支援內部文件連結)。請注意,這些只是本書附帶的程式碼範例,我上傳這些範例是為了您的方便;請注意,如果沒有公式和描述性文本,這些筆記本可能沒有用。
- 前言和序言摘錄
- 設定 Python 和 Jupiter Notebook 的說明
- 機器學習 - 賦予電腦從資料中學習的能力 [dir] [ipynb] [nbviewer]
- 訓練分類機器學習演算法 [dir] [ipynb] [nbviewer]
- 使用 Scikit-Learn 的機器學習分類器概覽 [dir] [ipynb] [nbviewer]
- 建立良好的訓練集 - 資料預處理 [dir] [ipynb] [nbviewer]
- 透過降維壓縮資料 [dir] [ipynb] [nbviewer]
- 學習模型評估和超參數最佳化的最佳實踐 [dir] [ipynb] [nbviewer]
- 組合不同模型進行整合學習 [dir] [ipynb] [nbviewer]
- 將機器學習應用於情緒分析 [dir] [ipynb] [nbviewer]
- 將機器學習模型嵌入 Web 應用程式中 [dir] [ipynb] [nbviewer]
- 使用迴歸分析預測連續目標變數 [dir] [ipynb] [nbviewer]
- 使用未標記的資料 – 聚類分析 [dir] [ipynb] [nbviewer]
- 訓練用於影像辨識的人工神經網路 [dir] [ipynb] [nbviewer]
- 透過 Theano 並行化神經網路訓練 [dir] [ipynb] [nbviewer]
方程式參考
[PDF] [TEX]
教學幻燈片
非常感謝 Dmitriy Dligach 分享了他目前在芝加哥洛約拉大學提供的機器學習課程的幻燈片。
- https://github.com/dmitriydligach/PyMLSlides
其他數學和 NumPy 資源
一些讀者詢問有關 Math 和 NumPy 的入門知識,因為由於長度限制,它們沒有包含在內。然而,我最近為另一本書整理了這些資源,但我在網路上免費提供這些章節,希望它們也可以作為本書的有用背景資料:
引用這本書
非常歡迎您在科學出版物和其他作品中重複使用本書中的程式碼片段或其他內容;在這種情況下,我希望引用原始來源:
參考書目:
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
司法協助:
拉斯卡,塞巴斯蒂安。 Python機器學習。英國伯明罕:Packt Publishing,2015 年。
反饋與評論
簡短的評論片段
Sebastian Raschka 的新書《Python 機器學習》剛發布。我有機會閱讀了評論副本,它正如我所期望的那樣 - 真的很棒!它組織得很好,超級容易遵循,它不僅為聰明的非專家提供了良好的基礎,從業者也可以在這裡獲得一些想法並學習新的技巧。
– Data Elixir 的 Lon Riesberg
幹得好!到目前為止,對我來說,它似乎已經達到了理論和實踐……數學和程式碼的正確平衡!
——布萊恩‧托馬斯
我(幾乎)讀過所有以 Scikit-learn 為基礎的機器學習書籍,這無疑是最好的一本。
——賈森‧沃洛索諾維奇
我見過的最好的書,來自 PACKT Publishing。這是一篇關於使用 Python 進行機器學習的寫得非常好的介紹。正如其他人所指出的,這是理論與應用的完美結合。
——喬許·D.
這本書融合了很難獲得的品質:將控制理論所需的數學與 Python 中的應用編碼結合。同樣令人高興的是,它沒有像許多其他書籍那樣浪費紙張來介紹 Python 入門知識,只是為了吸引更多讀者。您可以看出它是由知識淵博的作家編寫的,而不僅僅是 DIY 極客。
– 亞馬遜客戶
Sebastian Raschka 創建了一個令人驚嘆的機器學習教程,它將理論與實踐相結合。這本書從理論角度解釋了機器學習,並有大量編碼範例來展示如何實際使用機器學習技術。初學者或高級程式設計師都可以閱讀它。
- William P. Ross,7 本必讀的 Python 書籍
較長的評論
如果您需要協助來確定這本書是否適合您,請查看下面連結的一些「較長」評論。 (如果您寫了評論,請告訴我,我很樂意將其添加到列表中)。
- 特許 IT 學院 Patrick Hill 的 Python 機器學習評論
- 書評:Python 機器學習 作者:Sebastian Raschka 作者:Alex Turner,WhatPixel
連結
- Amazon.com、Amazon.co.uk、Amazon.de 的電子書和平裝本
- Packt(出版商)的電子書和平裝本
- 其他書店:Google Books、O'Reilly、Safari、Barnes & Noble、Apple iBooks...
- 社群平台:Goodreads
翻譯
- 義大利文翻譯來自“Apogeo”
- 德語翻譯來自“mitp Verlag”
- 日文翻譯來自“Impress Top Gear”
- 中文翻譯(繁體中文)
- 中文翻譯(簡體中文)
- 韓文翻譯來自“Kyobo”
- 波蘭文翻譯來自“Helion”
文獻參考與進一步閱讀資源
勘誤表
附贈筆記本(不在書中)
- 邏輯迴歸實作 [dir] [ipynb] [nbviewer]
- 基本管道和網格搜尋設定 [dir] [ipynb] [nbviewer]
- 擴展嵌套交叉驗證範例 [dir] [ipynb] [nbviewer]
- 一個簡單的 Barebones Flask Web 應用程式模板 [查看目錄][下載為 zip 檔案]
- 將 MNIST 中的手寫數字讀取到 NumPy 陣列中 [GitHub ipynb] [nbviewer]
- 使用 JSON 的 Scikit-learn 模型持久化 [GitHub ipynb] [nbviewer]
- 多項式邏輯迴歸/softmax迴歸 [GitHub ipynb] [nbviewer]
「相關內容」(書中沒有)
- 機器學習中的模型評估、模型選擇和演算法選擇 - 第一部分
- 機器學習中的模型評估、模型選擇和演算法選擇 - 第二部分
- 機器學習中的模型評估、模型選擇和演算法選擇 - 第三部分
SciPy 2016
我們在奧斯汀舉行的 2016 年 SciPy 大會上度過了一段愉快的時光!與我的書的這麼多讀者見面並聊天真是一件很高興的事。非常感謝所有的好話和回饋!如果你錯過了,Andreas Mueller 和我介紹了 Scikit-learn 的機器學習;如果您有興趣,第一部分和第二部分的影片現已上線!
PyData 芝加哥 2016
我在 2016 年 PyData 芝加哥大會上嘗試了一項相當具有挑戰性的任務,即在短短90 分鐘內介紹scikit-learn 和機器學習。簡介”中找到。
筆記
我建立了一個單獨的函式庫mlxtend
,其中包含機器學習(和一般「資料科學」)演算法的其他實作。我還添加了本書中的實作(例如,決策區域圖、人工神經網路和順序特徵選擇演算法)以及附加功能。
翻譯
親愛的讀者,
首先,我要感謝大家的大力支持!我對你們迄今為止給我的所有回饋感到非常高興,我很高興這本書對廣大讀者如此有用。
在過去的幾個月裡,我收到了數百封電子郵件,我嘗試在可用時間內回覆盡可能多的電子郵件。為了使它們對其他讀者也有用,我在常見問題部分(如下)中收集了許多答案。
另外,有些人問我有沒有一個平台可以讓讀者討論這本書的內容。我希望這能為您提供一個與其他讀者討論和分享您的知識的機會:
Google 網路論壇討論區
(如果時間允許,我會盡力自己回答問題!:))
好的建議唯一要做的就是將其傳遞下去。對自己來說從來沒有任何用處。
——奧斯卡王爾德
讀者的範例和應用
我不得不再次說(大!)感謝所有關於這本書的良好反饋。我收到了許多來自讀者的電子郵件,他們將本書中的概念和範例應用到現實世界中,並在他們的專案中充分利用它們。在本節中,我將開始收集其中一些出色的應用程序,並且我非常樂意將您的項目添加到此列表中 - 只需給我發一封快速郵件即可!
- Richard Lyman 的 40 個關於光學字元辨識的腳本
- Jeremy Nation 的程式碼實驗
- 我在 Python 中從頭開始實作分類器所學到的知識 作者:Jean-Nicholas Hould
常問問題
一般問題
- 什麼是機器學習和資料科學?
- 為什麼您和其他人有時會從頭開始實作機器學習演算法?
- 我應該關注數據科學的哪些學習路徑/學科?
- 人們應該從什麼時候開始為開源做出貢獻?
- 您認為導師對於學習過程有多重要?
- 以資料科學/機器學習或 Python 為中心的最佳線上社群在哪裡?
- 您如何向軟體工程師解釋機器學習?
- 您為機器學習初學者提供的課程是什麼樣的?
- 數據科學的定義是什麼?
- 資料科學家如何進行模型選擇?和Kaggle有什麼不同嗎?
有關機器學習領域的問題
- 人工智慧和機器學習有何關係?
- 機器學習在該領域的應用有哪些現實例子?
- 資料探勘有哪些不同的研究領域?
- 機器學習和資料探勘這兩個領域的研究性質有何差異?
- 我如何知道問題是否可以透過機器學習解決?
- 機器學習的起源是什麼?
- 分類作為一種學習機器是如何開發的?
- 哪些機器學習演算法可以被認為是最好的?
- 分類器的大致類別有哪些?
- 分類器和模型有什麼差別?
- 參數學習演算法和非參數學習演算法有什麼不同?
- 機器學習中的成本函數和損失函數有什麼不同?
有關 ML 概念和統計的問題
成本函數和最佳化
- 透過閉式方程式擬合模型、梯度下降、隨機梯度下降、小批量學習——有什麼區別?
- 如何導出線性迴歸和 Adaline 的梯度下降規則?
迴歸分析
樹模型
- 隨機森林模型如何運作?它與整合模型中的 bagging 和 boosting 有什麼不同?
- 對於大型資料集使用經典決策樹演算法有哪些缺點?
- 為什麼決策樹演算法的實作通常是二元的,不同雜質指標的優點是什麼?
- 為什麼我們要透過熵而不是分類誤差來生長決策樹?
- 隨機森林什麼時候可以表現得很糟?
模型評估
- 什麼是過擬合?
- 如何避免過度擬合?
- 在執行交叉驗證時,擁有盡可能多的折疊數總是更好嗎?
- 訓練 SVM 分類器時,支援向量的數量是多好還是少好?
- 如何評估模型?
- 多類別分類的最佳驗證指標是什麼?
- 選擇預測模型技術時應該考慮哪些因素?
- 幫助視覺化和理解分類器行為的最佳玩具資料集是什麼?
- 如何選擇 SVM 內核?
- 插曲:交叉驗證中效能指標的比較和計算-不平衡類別問題和計算 F1 分數的 3 種不同方法
邏輯迴歸
- 什麼是 Softmax 迴歸以及它與 Logistic 迴歸有何關係?
- 為什麼邏輯迴歸被視為線性模型?
- 正則化邏輯迴歸的機率解釋是什麼?
- 邏輯迴歸中的正規化是否總是能帶來更好的擬合和更好的泛化效果?
- 樸素貝葉斯和邏輯迴歸之間的主要區別是什麼?
- 機器學習中的「softmax 與多項式邏輯損失」到底是什麼?
- 邏輯迴歸和神經網路之間有什麼關係以及何時使用哪一個?
- 邏輯迴歸:為什麼使用 sigmoid 函數?
- 邏輯迴歸是否有類似線性迴歸常態方程式的解析解?
神經網路和深度學習
- 深度學習和通常的機器學習有什麼區別?
- 您能對神經網路的反向傳播演算法給予直覺的解釋嗎?
- 為什麼深度網路花了這麼長時間才被發明?
- 有哪些學習深度學習的好書/論文?
- 為什麼有這麼多深度學習庫?
- 為什麼有些人討厭神經網路/深度學習?
- 我如何知道深度學習對於特定問題是否比 SVM 或隨機森林更有效?
- 當我的神經網路的誤差增加時,出了什麼問題?
- 如何調試人工神經網路演算法?
- 感知器、Adaline 和神經網路模型之間有什麼區別?
- Dropout技術背後的基本想法是什麼?
其他監督學習演算法
無監督學習
半監督學習
整合方法
預處理、特徵選擇和提取
- 為什麼我們需要重新使用訓練參數來轉換測試資料?
- 機器學習中有哪些不同的降維方法?
- LDA和PCA降維有什麼差別?
- 我什麼時候應該應用資料規範化/標準化?
- 均值居中或特徵縮放是否會影響主成分分析?
- 如何解決具有大量特徵的機器學習問題?
- 處理缺失資料的常見方法有哪些?
- 用於特徵選擇的過濾器、包裝器和嵌入式方法有什麼區別?
- 資料準備/預處理步驟是否應該被視為特徵工程的一部分?為什麼或為什麼不呢?
- 用於文本分類的詞袋特徵表示是否被視為稀疏矩陣?
樸素貝葉斯
- 為什麼樸素貝葉斯分類器是樸素的?
- 樸素貝葉斯的決策邊界是什麼?
- 我可以對混合變數類型使用樸素貝葉斯分類器嗎?
- 是否可以在樸素貝葉斯中混合不同的變數類型,例如二元和連續特徵?
其他
- 機器學習中的歐幾裡得距離是什麼?
- 什麼時候應該使用中位數,而不是平均數或平均數?
用於資料科學和機器學習的程式語言和函式庫
- 如今,R 在數據科學中廣泛使用嗎?
- TensorFlow 和 scikit-learn 之間的主要差異是什麼?
關於本書的問題
- 我可以在簡報或部落格中使用書中的段落和圖像嗎?
- 這與其他機器學習書籍有何不同?
- 程式碼範例中使用了哪個版本的 Python?
- 正在使用哪些技術和函式庫?
- 您會推薦哪一種書籍版本/格式?
- 為什麼選擇 Python 進行機器學習?
- 為什麼在程式碼範例中使用如此多的前導和尾隨下劃線?
- 程式碼範例中
return self
習慣用法的目的是什麼? - 有什麼先決條件和推薦的預讀資料嗎?
- 如何將 SVM 應用於分類資料?
接觸
我很高興回答問題!只需給我寫一封電子郵件或考慮在 Google 網上論壇電子郵件清單中提問即可。
如果您有興趣保持聯繫,我有一個非常活躍的推特流(@rasbt),所有內容都是關於數據科學和機器學習的。我還維護一個博客,發布所有令我特別興奮的事情。