TechRoomage

乾貨|7步讓你從零開始掌握Python機器學習!

0 3

原標題:乾貨|7步讓你從零開始掌握Python機器學習!

這篇文章旨在通過7個步驟,將最少的機器學習知識轉化為知識型實踐者,所有這一切都在使用免費的材料和資源。這個大綱的主要目標是幫助你通過許多可用的免費選項; 有很多,可以肯定的,但哪些是最好的?哪個互補?使用所選資源的最佳順序是什麼?

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

  • 機器學習

  • Python

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

如果你對前兩個主題有一定程度的基本了解就更好了,不了解也沒有關係,提前花一點點時間了解一下就行了。

第一步:基本 Python 技能

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

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

乾貨|7步讓你從零開始掌握Python機器學習!

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

  • Learn Python the Hard Way,作者 Zed A. Shaw:https://learnpythonthehardway.org/book/

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

  • 谷歌開發者 Python 課程(強烈推薦視覺學習者學習):https://www.youtube.com/playlist?list=PLfZeRfzhgQzTMgwFVezQbnpc1ck0I6CQl

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

    https://engineering.ucsb.edu/~shell/che210d/python.pdf

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

  • 在 Y 分鐘內學會 X(X=Python):

    https://learnxinyminutes.com/docs/python/

當然,如果你已經是一位經驗豐富的 Python 程式員了,就可直接跳過。不過,我也是建議常使用 Python 文檔:https://www.python.org/doc/

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

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

所幸的是,對實踐來說,你並不需要獲得機器學習博士般的理論理解——就想要成為一個高效的程式員並不必要進行電腦科學理論的學習。

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

  • 吳恩達課程的非官方筆記:

    http://www.holehouse.org/mlclass/

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

  • Tom Mitchell 的機器學習課程:

    http://www.cs.cmu.edu/~ninamf/courses/601sp15/lectures.shtml

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

第三步:科學計算 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://pandas.pydata.org/pandas-docs/stable/10min.html

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

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

首先檢查一下準備情況

  • Python:就緒

  • 機器學習基本材料:就緒

  • Numpy:就緒

  • Pandas:就緒

  • Matplotlib:就緒

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

乾貨|7步讓你從零開始掌握Python機器學習!

scikit-learn 流程圖

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

  • 斯坦福的 iPython Notebook 概覽:

    http://cs231n.github.io/ipython-tutorial/

同樣也請注意,以下的教程是由一系列在線資源所組成。如果你感覺課程有什麼不合適的,可以和作者交流。我們第一個教程就是從 scikit-learn 開始的,我建議你們在繼續完成教程前可以按順序看一看以下的文章。

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

  • Jake VanderPlas 寫的 scikit-learn 簡介

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/scikit-learn/scikit-learn-intro.ipynb

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

  • Randal Olson 的機器學習案例筆記:

    http://nbviewer.jupyter.org/github/rhiever/Data-Analysis-and-Machine-Learning-Projects/tree/master/example-data-science-notebook/

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

  • Kevin Markham 的模型評估

    https://github.com/justmarkham/scikit-learn-videos/blob/master/05_model_evaluation.ipynb

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

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

  • K-均值聚類:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/04.2-Clustering-KMeans.ipynb

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

  • 決策樹:

    http://thegrimmscientist.com/tutorial-decision-trees/

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

  • 線性回歸:

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/scikit-learn/scikit-learn-linear-reg.ipynb

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

  • logistic 回歸:

    https://github.com/justmarkham/gadsdc/blob/master/logistic_assignment/README.md

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

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

  • 支持向量機:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/03.1-Classification-SVMs.ipynb

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

  • Kaggle Titanic 競賽(使用隨機森林):

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb

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

  • 降維演算法:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/04.1-Dimensionality-PCA.ipynb

在進入第七步之前,我們可以花一點時間考慮在相對較短的時間內取得的一些進展。首先使用 Python 及其機器學習庫,我們不僅已經了解了一些最常見和知名的機器學習演算法(k 近鄰、k 均值聚類、支持向量機等),還研究了強大的集成技術(隨機森林)和一些額外的機器學習任務(降維演算法和模型驗證技術)。除了一些基本的機器學習技巧,我們已經開始尋找一些有用的工具包。我們會進一步學習新的必要工具。

第七步:Python 深度學習

乾貨|7步讓你從零開始掌握Python機器學習!

神經網路包含很多層

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

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

  • 神經網路與深度學習, Michael Nielsen:http://neuralnetworksanddeeplearning.com/

1.Theano http://deeplearning.net/software/theano/

Theano 是我們講到的第一個 Python 深度學習庫。看看 Theano 作者怎麼說:

Theano 是一個 Python 庫,它可以使你有效地定義、優化和評估包含多維數組的數學表達式。

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

  • Theano 深度學習教程,Colin Raffel:

    http://nbviewer.jupyter.org/github/craffel/theano-tutorial/blob/master/Theano%20Tutorial.ipynb

2.Caffe http://caffe.berkeleyvision.org/

另一個我們將測試驅動的庫是 Caffe。再一次,讓我們從作者開始:

Caffe 是一個深度學習框架,由表達、速度和模塊性建構,Bwekeley 視覺與學習中心和社區工作者共同開發了 Caf fe。

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

  • 通過 Caffe 實現谷歌 DeepDream:

    https://github.com/google/deepdream/blob/master/dream.ipynb

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

原文:http://www.kdnuggets.com/2015/11/seven-steps-machine-learning-python.html

Leave A Reply

Your email address will not be published.