Python機器學習入門的準備·

python.jpg
前幾天讀到一則笑話,有人問投資界大拿:“你如何區分一個種子專案究竟是機器學習還是人工智慧(AI)?”大拿回答道:“如果技術團隊說專案是用Python寫的,那就是機器學習,如果是用PPT寫的,那就是人工智慧。”這個笑話雖然主要諷刺的是對人工智慧概念過度的炒作,但也從側面反映出Python在機器學習領域的重要意義,而就目前而言,在本質上,所謂的人工智慧,其實也只是機器學習的另一種稱呼而已。正因為python受歡迎程度如此之高,很多有志於從事機器學習工作的朋友都開始於學習Python,但如果要學習基於Python的機器學習,究竟要做哪些工作呢?本文提出了一些基礎性的建議與準備。
1.機器學習及其分類
和在相當程度上被低估或者高估的人工智慧概念相比,機器學習這一名稱就要樸質得多。谷歌的Alpha狗即使能打敗世界排名第一的圍棋高手,但在智力上仍然比不上任何一條現實中與你擦肩而過的流浪狗(或者單身狗),Alpha狗的成功,只是表明機器學習技術的飛速發展與進步,要想全面達到一條狗的智力,竊以為還有相當長的路要走。簡單來說,機器學習顧名思義,就是通過程式的方法通過已知的資料與資料找到規律和方法,去解決一些未知的問題,人類所做的大部分開創性的工作,在本質上與此類似,只不過機器學習與人類自主的學習不同的是,機器不具備通過億萬年的進化融入在基因中的學習策略與方法,而只能通過人類的程式設計,通過數學模型去完成學習工作。
機器學習可以簡單地分成兩大類,有監督的學習和無監督的學習,前者的一個簡單的例子是通過一批已知的簽名識別一個人的筆跡,而後者一個典型的應用則是在眾多的訪問中識別出對網站惡意的供給與訪問行為。這兩種問題主要的區別是,在前一種問題中,樣本和目標都是清楚的,而在後一種程度中,則不清楚這兩者,而需要機器進行發掘與分類。基於上述的情況,機器學習中關鍵的因素之一便是資料的數量和質量,因此,在進行機器學習前,熟悉一些資料處理與篩選的技術是不無裨益的。
2. 要準備的環境
要通過Python進行機器學習,首要的先決條件當然是安裝Python,一般來說,雖然原生的Python當然也可以使用,但為了免去人工安裝很多包(並且解決其依賴性問題)的複雜,可以選擇用於科學研究的Python發行版(Python有一個官方的正式發行版,以及數量非常多的用於各種不同用途的發行版),這些發行版中以Anaconda最為流行,也最為推薦,Enthought Canopy當然也不錯,但缺點在於僅支援Python2,而Python3才是(大部分人)公認的python發展方向,畢竟Python2早已經不更新了。還有Python(x,y)但相對小眾一些,還是推薦Anaconda作為主要的Python開發版本。
Python機器學習中最有用的工具之一是Jupyter Notebook,如果你安裝了Anaconda發行版,那麼Jupyter Notebook已經包含在其中了,如果是其他版本,可能需要手動再安裝一次。與此類似,進行機器學習需要的環境軟體包比如NumPy,Scipy,matplotlib,pandas,Ipython,scikit-learn(最受歡迎的機器學習框架之一)都已經包含在Anaconda中了,如果安裝的是官方版本的Python,那麼這些軟體包都需要逐個安裝一遍,那麼,即使只是為了省事,也沒有理由不用Anaconda了。
測試資料在scikit-learn中有一些,都是用於機器學習練習的非常好的資料,因此在學習階段基本上不太需要自己蒐集資料(雖然等到了實際應用中還是需要蒐集大量資料的),如果用的是其他機器學習框架,那麼即使細節方面不太一樣,基本的理念都還是類似的。
有了上面這些條件,Python機器學習的路程,就算邁出第一步了。剩下的,也不過就是十萬八萬步而已了吧。加油。