Python教程:進擊機器學習(一)--概述
開啟Python科學之旅
本章介紹了Python在機器學習中常用的庫和工具,包括數學計算和繪圖。
Python資料科學生態
為什麼選擇Python?
先獻上IEEE Spectrum Magazine 2017 程式設計排行圖一張
Python 的排名從去年開始就在持續上升,並躍至第一。
拋開這驕人的成績,我們講一講做資料科學的剛需:
* 獲取資料
* 操作資料
* 視覺化資料
那麼Python的優勢又是什麼:
1. Python存在豐富的數學計算、繪圖和資料處理的工具。我們不需要複雜的程式設計去繪製一條曲線、計算傅立葉變換和一個基礎的演算法。用老外的一句話來形容就特別貼切,Don’t reinvent the wheel!
2. Python相比起其他高階語言來說是容易上手的,沒有那麼多複雜的格式,只需用縮排來規整格式。相比起C、C++這些開發語言來說,高階語言的優勢就明顯了,Easy to learn!
3. 當你用上了Python之後,就會對它愛不釋手,Python的程式可讀性並不是其他語言可以相比的,簡單的語法、沒有一些奇怪的符號和長長的引數。不管是閱讀別人的程式碼還是別人參考你的程式碼都變得容易,Easy communication!
4. Python高效的計算能力,雖然Python的執行效率不可能比得上C、C++這種底層的語言,但是從開發時間來說,Python可是不會辜負快速開發這個稱號,不然Python也不會這麼受歡迎。
5. 還有重要的一點是,Python可以用於解決各種各樣的問題,不用為了解決某個問題而去學習新的語言和工具。Python不僅可以作為指令碼語言、開發網站和軟體、科學計算、爬蟲等。
當然說到機器學習用的工具,除了Python不得不說的就是Matlab。Matlab具有和Python一樣的易用性,在模擬和實驗上比Python要好,是學術學者最喜歡用的工具,做理論研究的必備。但是在應用開發上,Matlab就顯得捉襟見肘了。
雖然說Python和Matlab走的是兩個不同的路子,但是如果要選一個的話,就只能是Python了,在現在學術界和產業界的聯絡越來越緊密,應用的生產週期越來越短的時代,Python的快速開發性就順應了這個潮流。
講了這麼多Python的廢話,還是來點乾的。
Python機器學習庫
Python在科學計算領域,有兩個重要的擴充套件模組:Numpy
- 一個強大的N維陣列物件Array;
- 比較成熟的(廣播)函式庫;
- 用於整合C/C++程式碼的工具包;
- 實用的線性代數、傅立葉變換和隨機數生成函式。
SciPy是一個開源的Python演算法庫和數學工具包,SciPy包含的模組有最優化、線性代數、積分、插值、特殊函式、快速傅立葉變換、訊號處理和影象處理、常微分方程求解和其他科學與工程中常用的計算。其功能與軟體MATLAB、Scilab和GNU Octave類似。
而Python大多數機器學習庫都依賴於這兩個模組,主流的機器學習庫有:
1. scikit-learn
scikit-learn 是一個基於SciPy和Numpy的開源機器學習模組,包括分類、迴歸、聚類系列演算法,主要演算法有SVM、邏輯迴歸、樸素貝葉斯、Kmeans、DBSCAN等,目前由INRI 資助,偶爾Google也資助一點。
專案主頁:
https://pypi.python.org/pypi/scikit-learn/
http://scikit-learn.org/
https://github.com/scikit-learn/scikit-learn
2. NLTK
NLTK(Natural Language Toolkit)是Python的自然語言處理模組,包括一系列的字元處理和語言統計模型。NLTK 常用於學術研究和教學,應用的領域有語言學、認知科學、人工智慧、資訊檢索、機器學習等。 NLTK提供超過50個語料庫和詞典資源,文字處理庫包括分類、分詞、詞幹提取、解析、語義推理。可穩定執行在Windows, Mac OS X和Linux平臺上.
專案主頁:
http://sourceforge.net/projects/nltk/
https://pypi.python.org/pypi/nltk/
http://nltk.org/
3. Mlpy
Mlpy是基於NumPy/SciPy的Python機器學習模組,它是Cython的擴充套件應用。
專案主頁:
http://sourceforge.net/projects/mlpy
https://mlpy.fbk.eu/
更多的機器學習庫可通過https://pypi.python.org/pypi查詢。
這是幾個主流的機器學習庫,當然現在更火的是深度學習,用Python程式設計的深度學習框架就有Theano、Keras、Lasagne和Google的開源框架Tensorflow。
繪圖和視覺化依賴於Matplotlib庫,附上我用Matplotlib畫的一張圖:
再一次說明Python的流行度,哈哈!
PS: 深度學習框架以後也會介紹,還有一些個人學習的筆記,有興趣的同學記得關注我的簡書。這個系列會詳細介紹scikit-learn這個應用最廣泛的機器學習框架,有興趣的同學多多支援一下。