發布時間: 2017-06-28 09:37:07
Python是最好的編程語言之一,在科學計算中用途廣泛。當然,它也有些缺點,其中一個是工具和庫過于分散。如果你是擁有unix思維的人,你會覺得每個工具只做一件事并且把它做好是非常方便的。但是你也需要知道不同庫和工具的優缺點,這樣在構建系統時才能做出合理的決策。工具本身不能改善系統或產品,但是使用正確的工具,我們可以工作得更高效,生產率更高。因此了解正確的工具,對你的工作領域是非常重要的。這篇文章的目的就是列舉并描述Python可用的最有用的機器學習工具和庫。這個列表中,我們不要求這些庫是用Python寫的,只要有Python接口就夠了。
Scikit-Learn
Scikit Learn是在CB Insights選用的機器學習工具??梢杂盟M行分類、特征選擇、特征提取和聚集。小編最愛的一點是它擁有易用的一致性API,并提供了很多開箱可用的求值、診斷和交叉驗證方法。錦上添花的是它底層使用Scipy數據結構,與Python中其余使用Scipy、Numpy、Pandas和Matplotlib進行科學計算的部分適應地很好。因此,如果你想可視化分類器的性能,比如,使用精確率與反饋率圖表或接收者操作特征曲線,Matplotlib可以幫助進行快速可視化??紤]到花在清理和構造數據的時間,使用這個庫會非常方便,因為它可以緊密集成到其他科學計算包上。另外,它還包含有限的自然語言處理特征提取能力以及詞袋、tfidf算法、預處理。此外,如果你想快速對小數據集進行不同基準測試的話,它自帶的數據集模塊提供了常見和有用的數據集。你還可以根據這些數據集創建自己的小數據集,這樣在將模型應用到真實世界中之前,你可以按照自己的目的來檢驗模型是否符合期望。對參數最優化和參數調整,它也提供了網格搜索和隨機搜索。
Statsmodels
Statsmodels是另一個聚焦在統計模型上的強大的庫,主要用于預測性和探索性分析。如果你想擬合線性模型、進行統計分析或者預測性建模,那么Statsmodels非常適合。它提供的統計測試相當全面,覆蓋了大部分情況的驗證任務。如果你是R或者S的用戶,它也提供了某些統計模型的R語法。它的模型同時也接受Numpy數組和Pandas數據幀,讓中間數據結構成為過去!
PyMC
PyMC是做貝葉斯曲線的工具。它包含貝葉斯模型、統計分布和模型收斂的診斷工具,也包含一些層次模型。如果想進行貝葉斯分析,你應該看看。
Shogun
Shogun是個聚焦在支持向量機上的機器學習工具箱,用C++編寫。它正處于積極開發和維護中,提供了Python接口,也是文檔化最好的接口。但是,相對于Scikit-learn,我們發現它的API比較難用。而且,也沒提供很多開箱可用的診斷和求值算法。但是,速度是個很大的優勢。
Gensim
Gensim被定義為“人們的主題建模工具(topic modeling for humans)”。它的主頁上描述,其焦點是狄利克雷劃分及變體。不同于其他包,它支持自然語言處理,能將NLP和其他機器學習算法更容易組合在一起。如果你的領域在NLP,并想進行聚集和基本的分類,你可以看看。目前,它們引入了Google的基于遞歸神經網絡的文本表示法word2vec。這個庫只使用Python編寫。
Orange
Orange是這篇文章列舉的所有庫中唯一帶有圖形用戶界面的。對分類、聚集和特征選擇方法而言,它是相當全面的,還有些交叉驗證的方法。在某些方面比Scikit-learn還要好,但與其他科學計算系統的適配上比不上Scikit-learn。但是,包含GUI是個很重要的優勢。你可以可視化交叉驗證的結果、模型和特征選擇方法,某些功能需要安裝Graphviz。對大多數算法,Orange都有自己的數據結構,所以你需要將數據包裝成Orange兼容的數據結構,這使得其學習曲線更陡。
PyMVPA
PyMVPA是另一個統計學習庫,API上與Scikit-learn很像。包含交叉驗證和診斷工具,但是沒有Scikit-learn全面。
如果我們遺漏了你最愛的Python機器學習包,歡迎你訪問騰科官網(http://youw.xyz)分享給我們知道。我們很樂意將其添加到文章中。