只需十四步從零開始掌握Python機器學習(附資源)

      網友投稿 980 2022-05-29

      「開始」往往是最難的,尤其是當選擇太多的時候,一個人往往很難下定決定做出選擇。本教程的目的是幫助幾乎沒有 Python 機器學習背景的新手成長為知識淵博的實踐者,而且這個過程中僅需要使用免費的材料和資源即可。這個大綱的主要目標是帶你了解那些數量繁多的可用資源。毫無疑問,資源確實有很多,但哪些才是最好的呢?哪些是互補的呢?以怎樣的順序學習這些資源才是最合適的呢?

      首先,我假設你并不是以下方面的專家:

      機器學習

      Python

      任何 Python 的機器學習、科學計算或數據分析庫

      當然,如果你對前兩個主題有一定程度的基本了解就更好了,但那并不是必要的,在早期階段多花一點點時間了解一下就行了。

      基礎篇

      第一步:基本 Python 技能

      如果我們打算利用 Python 來執行機器學習,那么對 Python 有一些基本的了解就是至關重要的。幸運的是,因為 Python 是一種得到了廣泛使用的通用編程語言,加上其在科學計算和機器學習領域的應用,所以找到一個初學者教程并不十分困難。你在 Python 和編程上的經驗水平對于起步而言是至關重要的。

      首先,你需要安裝 Python。因為我們后面會用到科學計算和機器學習軟件包,所以我建議你安裝 Anaconda。這是一個可用于 Linux、OS X 和 Windows 上的工業級的 Python 實現,完整包含了機器學習所需的軟件包,包括 numpy、scikit-learn 和 matplotlib。其也包含了 iPython Notebook,這是一個用在我們許多教程中的交互式環境。我推薦安裝 Python 2.7。

      如果你不懂編程,我建議你從下面的免費在線書籍開始學習,然后再進入后續的材料:

      如果你有編程經驗,但不懂 Python 或還很初級,我建議你學習下面兩個課程:

      谷歌開發者 Python 課程(強烈推薦視覺學習者學習):http://suo.im/toMzq

      Python 科學計算入門(來自 UCSB Engineering 的 M. Scott Shell)(一個不錯的入門,大約有 60 頁):http://suo.im/2cXycM

      如果你要 30 分鐘上手 Python 的快速課程,看下面:

      在 Y 分鐘內學會 X(X=Python):http://suo.im/zm6qX

      當然,如果你已經是一位經驗豐富的 Python 程序員了,這一步就可以跳過了。即便如此,我也建議你常使用 Python 文檔:https://www.python.org/doc/

      第二步:機器學習基礎技巧

      KDnuggets 的 Zachary Lipton 已經指出:現在,人們評價一個「數據科學家」已經有很多不同標準了。這實際上是機器學習領域領域的一個寫照,因為數據科學家大部分時間干的事情都牽涉到不同程度地使用機器學習算法。為了有效地創造和獲得來自支持向量機的洞見,非常熟悉核方法(kernel methods)是否必要呢?當然不是。就像幾乎生活中的所有事情一樣,掌握理論的深度是與實踐應用相關的。對機器學習算法的深度了解超過了本文探討的范圍,它通常需要你將非常大量的時間投入到更加學術的課程中去,或者至少是你自己要進行高強度的自學訓練。

      好消息是,對實踐來說,你并不需要獲得機器學習博士般的理論理解——就想要成為一個高效的程序員并不必要進行計算機科學理論的學習。

      人們對吳恩達在 Coursera 上的機器學習課程內容往往好評如潮;然而,我的建議是瀏覽前一個學生在線記錄的課堂筆記。跳過特定于 Octave(一個類似于 Matlab 的與你 Python 學習無關的語言)的筆記。一定要明白這些都不是官方筆記,但是可以從它們中把握到吳恩達課程材料中相關的內容。當然如果你有時間和興趣,你現在就可以去 Coursera 上學習吳恩達的機器學習課程:http://suo.im/2o1uD

      吳恩達課程的非官方筆記:http://www.holehouse.org/mlclass/

      除了上面提到的吳恩達課程,如果你還需要需要其它的,網上還有很多各類課程供你選擇。比如我就很喜歡 Tom Mitchell,這里是他最近演講的視頻(一起的還有 Maria-Florina Balcan),非常平易近人。

      Tom Mitchell 的機器學習課程:http://suo.im/497arw

      目前你不需要所有的筆記和視頻。一個有效地方法是當你覺得合適時,直接去看下面特定的練習題,參考上述備注和視頻恰當的部分,

      第三步:科學計算 Python 軟件包概述

      好了,我們已經掌握了 Python 編程并對機器學習有了一定的了解。而在 Python 之外,還有一些常用于執行實際機器學習的開源軟件庫。廣義上講,有很多所謂的科學 Python 庫(scientific Python libraries)可用于執行基本的機器學習任務(這方面的判斷肯定有些主觀性):

      numpy——主要對其 N 維數組對象有用?http://www.numpy.org/

      pandas——Python 數據分析庫,包括數據框架(dataframes)等結構?http://pandas.pydata.org/

      matplotlib——一個 2D 繪圖庫,可產生出版物質量的圖表?http://matplotlib.org/

      scikit-learn——用于數據分析和數據挖掘人物的機器學習算法?http://scikit-learn.org/stable/

      學習這些庫的一個好方法是學習下面的材料:

      Scipy Lecture Notes,來自 Ga?l Varoquaux、Emmanuelle Gouillart 和 Olav Vahtras:http://www.scipy-lectures.org/

      這個 pandas 教程也很不錯:10 Minutes to Pandas:http://suo.im/4an6gY

      在本教程的后面你還會看到一些其它的軟件包,比如基于 matplotlib 的數據可視化庫 Seaborn。前面提到的軟件包只是 Python 機器學習中常用的一些核心庫的一部分,但是理解它們應該能讓你在后面遇到其它軟件包時不至于感到困惑。

      下面就開始動手吧!

      第四步:使用 Python 學習機器學習

      首先檢查一下準備情況

      Python:就緒

      機器學習基本材料:就緒

      Numpy:就緒

      Pandas:就緒

      Matplotlib:就緒

      現在是時候使用 Python 機器學習標準庫 scikit-learn 來實現機器學習算法了。

      scikit-learn 流程圖

      下面許多的教程和訓練都是使用 iPython (Jupyter) Notebook 完成的,iPython Notebook 是執行 Python 語句的交互式環境。iPython Notebook 可以很方便地在網上找到或下載到你的本地計算機。

      來自斯坦福的 iPython Notebook 概覽:http://cs231n.github.io/ipython-tutorial/

      下面是一篇是對 scikit-learn 簡介的文章,scikit-learn 是 Python 最常用的通用機器學習庫,其覆蓋了 K 近鄰算法:

      Jake VanderPlas 寫的 scikit-learn 簡介:http://suo.im/3bMdEd

      下面的會更加深入、擴展的一篇簡介,包括了從著名的數據庫開始完成一個項目:

      Randal Olson 的機器學習案例筆記:http://suo.im/RcPR6

      下一篇關注于在 scikit-learn 上評估不同模型的策略,包括訓練集/測試集的分割方法:

      Kevin Markham 的模型評估:http://suo.im/2HIXDD

      第五步:Python 上實現機器學習的基本算法

      在有了 scikit-learn 的基本知識后,我們可以進一步探索那些更加通用和實用的算法。我們從非常出名的 K 均值聚類(k-means clustering)算法開始,它是一種非常簡單和高效的方法,能很好地解決非監督學習問題:

      K-均值聚類:http://suo.im/40R8zf

      接下來我們可以回到分類問題,并學習曾經最流行的分類算法:

      決策樹:http://thegrimmscientist.com/tutorial-decision-trees/

      在了解分類問題后,我們可以繼續看看連續型數值預測:

      線性回歸:http://suo.im/3EV4Qn

      我們也可以利用回歸的思想應用到分類問題中,即 logistic 回歸:

      logistic 回歸:http://suo.im/S2beL

      第六步:Python 上實現進階機器學習算法

      我們已經熟悉了 scikit-learn,現在我們可以了解一下更高級的算法了。首先就是支持向量機,它是一種依賴于將數據轉換映射到高維空間的非線性分類器。

      支持向量機:http://suo.im/2iZLLa

      隨后,我們可以通過 Kaggle Titanic 競賽檢查學習作為集成分類器的隨機森林:

      Kaggle Titanic 競賽(使用隨機森林):http://suo.im/1o7ofe

      降維算法經常用于減少在問題中所使用的變量。主成份分析法就是非監督降維算法的一個特殊形式:

      降維算法:http://suo.im/2k5y2E

      在進入第七步之前,我們可以花一點時間考慮在相對較短的時間內取得的一些進展。

      首先使用 Python 及其機器學習庫,我們不僅已經了解了一些最常見和知名的機器學習算法(k 近鄰、k 均值聚類、支持向量機等),還研究了強大的集成技術(隨機森林)和一些額外的機器學習任務(降維算法和模型驗證技術)。除了一些基本的機器學習技巧,我們已經開始尋找一些有用的工具包。

      我們會進一步學習新的必要工具。

      第七步:Python 深度學習

      神經網絡包含很多層

      深度學習無處不在。深度學習建立在幾十年前的神經網絡的基礎上,但是最近的進步始于幾年前,并極大地提高了深度神經網絡的認知能力,引起了人們的廣泛興趣。如果你對神經網絡還不熟悉,KDnuggets 有很多文章詳細介紹了最近深度學習大量的創新、成就和贊許。

      最后一步并不打算把所有類型的深度學習評論一遍,而是在 2 個先進的當代 Python 深度學習庫中探究幾個簡單的網絡實現。對于有興趣深挖深度學習的讀者,我建議從下面這些免費的在線書籍開始:

      1.Theano

      鏈接:http://deeplearning.net/software/theano/

      下面關于運用 Theano 學習深度學習的入門教程有點長,但是足夠好,描述生動,評價很高:

      2.Caffe

      鏈接:http://caffe.berkeleyvision.org/

      這個教程是本篇文章中最好的一個。我們已經學習了上面幾個有趣的樣例,但沒有一個可與下面這個樣例相競爭,其可通過 Caffe 實現谷歌的 DeepDream。這個相當精彩!掌握教程之后,可以嘗試使你的處理器自如運行,就當作是娛樂。

      通過 Caffe 實現谷歌 DeepDream:http://suo.im/2cUSXS

      我并沒有保證說這會很快或容易,但是如果你投入了時間并完成了上面的 7 個步驟,你將在理解大量機器學習算法以及通過流行的庫(包括一些在目前深度學習研究領域最前沿的庫)在 Python 中實現算法方面變得很擅長。

      進階篇

      機器學習算法

      本篇是使用 Python 掌握機器學習的 7 個步驟系列文章的下篇,如果你已經學習了該系列的上篇,那么應該達到了令人滿意的學習速度和熟練技能;如果沒有的話,你也許應該回顧一下上篇,具體花費多少時間,取決于你當前的理解水平。我保證這樣做是值得的。快速回顧之后,本篇文章會更明確地集中于幾個機器學習相關的任務集上。由于安全地跳過了一些基礎模塊——Python 基礎、機器學習基礎等等——我們可以直接進入到不同的機器學習算法之中。這次我們可以根據功能更好地分類教程。

      第1步:機器學習基礎回顧&一個新視角

      上篇中包括以下幾步:

      1. Python 基礎技能

      2. 機器學習基礎技能

      3. Python 包概述

      4. 運用 Python 開始機器學習:介紹&模型評估

      5. 關于 Python 的機器學習主題:k-均值聚類、決策樹、線性回歸&邏輯回歸

      6. 關于 Python 的高階機器學習主題:支持向量機、隨機森林、PCA 降維

      7. Python 中的深度學習

      如上所述,如果你正準備從頭開始,我建議你按順序讀完上篇。我也會列出所有適合新手的入門材料,安裝說明包含在上篇文章中。

      只需十四步:從零開始掌握Python機器學習(附資源)

      然而,如果你已經讀過,我會從下面最基礎的開始:

      維基百科條目:統計學分類。地址:http://suo.im/mquen

      如果你正在尋找學習機器學習基礎的替代或補充性方法,恰好我可以把正在看的 Shai Ben-David 的視頻講座和 Shai Shalev-Shwartz 的教科書推薦給你:

      Shai Ben-David 的機器學習介紹視頻講座,滑鐵盧大學。地址:http://suo.im/1TFlK6

      記住,這些介紹性資料并不需要全部看完才能開始我寫的系列文章。視頻講座、教科書及其他資源可在以下情況查閱:當使用機器學習算法實現模型時或者當合適的概念被實際應用在后續步驟之中時。具體情況自己判斷。

      第2步:更多的分類

      我們從新材料開始,首先鞏固一下我們的分類技術并引入一些額外的算法。雖然本篇文章的第一部分涵蓋決策樹、支持向量機、邏輯回歸以及合成分類隨機森林,我們還是會添加 k-最近鄰、樸素貝葉斯分類器和多層感知器。

      Scikit-learn 分類器

      k-最近鄰(kNN)是一個簡單分類器和懶惰學習者的示例,其中所有計算都發生在分類時間上(而不是提前在訓練步驟期間發生)。kNN 是非參數的,通過比較數據實例和 k 最近實例來決定如何分類。

      使用 Python 進行 k-最近鄰分類。地址:http://suo.im/2zqW0t

      樸素貝葉斯是基于貝葉斯定理的分類器。它假定特征之間存在獨立性,并且一個類中任何特定特征的存在與任何其它特征在同一類中的存在無關。

      多層感知器(MLP)是一個簡單的前饋神經網絡,由多層節點組成,其中每個層與隨后的層完全連接。多層感知器在 Scikit-learn 版本 0.18 中作了介紹。

      首先從 Scikit-learn 文檔中閱讀 MLP 分類器的概述,然后使用教程練習實現。

      神經網絡模型(監督式),Scikit-learn 文檔。地址:http://suo.im/3oR76l

      第3步:更多聚類

      我們現在接著講聚類,一種無監督學習形式。上篇中,我們討論了 k-means 算法; 我們在此介紹 DBSCAN 和期望最大化(EM)。

      Scikit-learn聚類算法

      首先,閱讀這些介紹性文章; 第一個是 k 均值和 EM 聚類技術的快速比較,是對新聚類形式的一個很好的繼續,第二個是對 Scikit-learn 中可用的聚類技術的概述:

      在玩具數據集中比較不同的聚類算法,Scikit-learn 文檔。地址:http://suo.im/4uvbbM

      期望最大化(EM)是概率聚類算法,并因此涉及確定實例屬于特定聚類的概率。EM 接近統計模型中參數的最大似然性或最大后驗估計(Han、Kamber 和 Pei)。EM 過程從一組參數開始迭代直到相對于 k 聚類的聚類最大化。

      首先閱讀關于 EM 算法的教程。接下來,看看相關的 Scikit-learn 文檔。最后,按照教程使用 Python 自己實現 EM 聚類。

      高斯混合模型,Scikit-learn 文檔。地址:http://suo.im/20C2tZ。

      如果高斯混合模型初看起來令人困惑,那么來自 Scikit-learn 文檔的這一相關部分應該可以減輕任何多余的擔心:

      基于密度且具有噪聲的空間聚類應用(DBSCAN)通過將密集數據點分組在一起,并將低密度數據點指定為異常值來進行操作。

      首先從 Scikit-learn 的文檔中閱讀并遵循 DBSCAN 的示例實現,然后按照簡明的教程學習:

      DBSCAN 聚類算法演示,Scikit-learn 文檔。地址:http://suo.im/1l9tvX

      基于密度的聚類算法(DBSCAN)和實現。地址:http://suo.im/1LEoXC

      第4步:更多的集成方法

      上篇只涉及一個單一的集成方法:隨機森林(RF)。RF 作為一個頂級的分類器,在過去幾年中取得了巨大的成功,但它肯定不是唯一的集成分類器。我們將看看包裝、提升和投票。

      給我一個提升

      首先,閱讀這些集成學習器的概述,第一個是通用性的;第二個是它們與 Scikit-learn 有關:

      Scikit-learn 中的集成方法,Scikit-learn 文檔。地址:http://suo.im/yFuY9

      然后,在繼續使用新的集成方法之前,請通過一個新的教程快速學習隨機森林:

      Python 中的隨機森林,來自 Yhat。地址:http://suo.im/2eujI

      包裝、提升和投票都是不同形式的集成分類器,全部涉及建構多個模型; 然而,這些模型由什么算法構建,模型使用的數據,以及結果如何最終組合起來,這些都會隨著方案而變化。

      包裝:從同一分類算法構建多個模型,同時使用來自訓練集的不同(獨立)數據樣本——Scikit-learn 實現包裝分類器

      提升:從同一分類算法構建多個模型,一個接一個地鏈接模型,以提高每個后續模型的學習——Scikit-learn 實現 AdaBoost

      投票:構建來自不同分類算法的多個模型,并且使用標準來確定模型如何最好地組合——Scikit-learn 實現投票分類器

      那么,為什么要組合模型?為了從一個特定角度處理這個問題,這里是偏差-方差權衡的概述,具體涉及到提升,以下是 Scikit-learn 文檔:

      單一評估器 vs 包裝:偏差-方差分解,Scikit-learn 文檔。地址:http://suo.im/3izlRB

      現在你已經閱讀了關于集成學習器的一些介紹性材料,并且對幾個特定的集成分類器有了基本了解,下面介紹如何從 Machine Learning Mastery 中使用 Scikit-learn 在 Python 中實現集成分類器:

      第5步:梯度提升

      下一步我們繼續學習集成分類器,探討一個當代最流行的機器學習算法。梯度提升最近在機器學習中產生了顯著的影響,成為了 Kaggle 競賽中最受歡迎和成功的算法之一。

      給我一個梯度提升

      首先,閱讀梯度提升的概述:

      維基百科條目:梯度提升。地址:http://suo.im/TslWi

      接下來,了解為什么梯度提升是 Kaggle 競賽中「最制勝」的方法:

      為什么梯度提升完美解決了諸多 Kaggle 難題?Quora,地址:http://suo.im/3rS6ZO

      雖然 Scikit-learn 有自己的梯度提升實現,我們將稍作改變,使用 XGBoost 庫,我們提到過這是一個更快的實現。

      以下鏈接提供了 XGBoost 庫的一些額外信息,以及梯度提升(出于必要):

      維基百科條目:XGBoost。地址:http://suo.im/2UlJ3V

      Ghub 上的 XGBoost 庫。地址:http://suo.im/2JeQI8

      XGBoost 文檔。地址:http://suo.im/QRRrm

      現在,按照這個教程把所有匯聚起來:

      你還可以按照這些更簡潔的示例進行強化:

      XGBoost 在 Kaggle 上的示例(Python)。地址:http://suo.im/4F9A1J

      第6步:更多的降維

      降維是通過使用過程來獲得一組主變量,將用于模型構建的變量從其初始數減少到一個減少數。

      有兩種主要形式的降維:

      1. 特征選擇——選擇相關特征的子集。地址:http://suo.im/4wlkrj

      2. 特征提取——構建一個信息性和非冗余的衍生值特征集。地址:http://suo.im/3Gf0Yw

      下面是一對常用的特征提取方法。

      以上定義來自 PCA 維基百科條目,如果感興趣可進一步閱讀。但是,下面的概述/教程非常徹底:

      LDA 與方差分析(ANOVA)和回歸分析密切相關,它同樣嘗試將一個因變量表示為其他特征或測量的線性組合。然而,ANOVA 使用分類獨立變量和連續因變量,而判別分析具有連續的獨立變量和分類依賴變量(即類標簽)。

      上面的定義也來自維基百科。下面是完整的閱讀:

      你對 PCA 和 LDA 對于降維的實際差異是否感到困惑?Sebastian Raschka 做了如下澄清:

      有關這方面的簡要說明,請閱讀以下內容:

      第 7 步:更多的深度學習

      上篇中提供了一個學習神經網絡和深度學習的入口。如果你的學習到目前比較順利并希望鞏固對神經網絡的理解,并練習實現幾個常見的神經網絡模型,那么請繼續往下看。

      首先,看一些深度學習基礎材料:

      接下來,在 Google 的機器智能開源軟件庫 TensorFlow(一個有效的深度學習框架和現今幾乎是最好的神經網絡工具)嘗試一些簡明的概述/教程:

      機器學習敲門磚:任何人都能看懂的 TensorFlow 介紹?(第 1、2 部分)

      入門級解讀:小白也能看懂的 TensorFlow 介紹?(第 3、4 部分)

      最后,直接從 TensorFlow 網站試用這些教程,它實現了一些最流行和常見的神經網絡模型:

      循環神經網絡,谷歌 TensorFlow 教程。地址:http://suo.im/2gtkze

      卷積神經網絡,谷歌 TensorFlow 教程。地址:http://suo.im/g8Lbg

      此外,目前一篇關于 7 個步驟掌握深度學習的文章正在寫作之中,重點介紹使用位于 TensorFlow 頂部的高級 API,以增模型實現的容易性和靈活性。我也將在完成后在這兒添加一個鏈接。

      相關的:

      進入機器學習行業之前應該閱讀的 5 本電子書。地址:http://suo.im/SlZKt

      理解深度學習的 7 個步驟。地址:http://suo.im/3QmEfV

      機器學習關鍵術語及解釋。地址:http://suo.im/2URQGm

      Python 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:騰訊云linux系統結合nginx部署項目
      下一篇:詳解HTML相對路徑和絕對路徑
      相關文章
      亚洲男人第一av网站| 亚洲国产精品激情在线观看| 亚洲午夜福利717| 久久久久无码专区亚洲av| 丁香亚洲综合五月天婷婷| va亚洲va日韩不卡在线观看| AV激情亚洲男人的天堂国语| 亚洲男人的天堂网站| jzzijzzij在线观看亚洲熟妇| 日韩亚洲人成网站| 亚洲国产精品第一区二区三区| 亚洲精品无码专区2| 曰韩亚洲av人人夜夜澡人人爽 | 亚洲国产模特在线播放| 亚洲精品在线网站| 亚洲中文无码a∨在线观看| 亚洲av午夜精品无码专区| 亚洲人成色在线观看| 亚洲AV综合永久无码精品天堂| 国产精品亚洲а∨无码播放麻豆| 亚洲精品成人网久久久久久| 久久久久亚洲AV无码专区桃色| 亚洲韩国精品无码一区二区三区| 久久亚洲成a人片| 亚洲伊人久久大香线蕉影院| 亚洲AV无码无限在线观看不卡 | 亚洲AV成人一区二区三区AV| 亚洲成在人天堂在线| 亚洲熟妇无码久久精品| 国产亚洲福利在线视频| 色婷婷六月亚洲综合香蕉| 亚洲中文字幕丝袜制服一区| 亚洲精品狼友在线播放| 91亚洲自偷手机在线观看| 亚洲人成电影青青在线播放| 亚洲精品无播放器在线播放| 亚洲国产精品激情在线观看| 亚洲VA中文字幕不卡无码| 亚洲电影在线播放| 亚洲国产精品成人综合色在线| 亚洲国产精品第一区二区三区|