搜尋
首頁後端開發Python教學總結Python常用的機器學習庫

總結Python常用的機器學習庫

Aug 17, 2017 am 11:28 AM
python學習用的

Python在科學計算中用途廣泛:電腦視覺、人工智慧、數學、天文等。它同樣適用於機器學習也是意料之中的事。

這篇文章就列舉並描述Python的最有用的機器學習工具和函式庫。這個清單中,我們不要求這些函式庫是用Python寫的,只要有Python介面就夠了。

我們的目的不是列出Python中所有機器學習庫(搜尋「機器學習」時Python套件索引(PyPI)返回了139個結果),而是列出我們所知的有用並且維護良好的那些。

另外,儘管有些模組可以用於多種機器學習任務,我們只列出主要焦點在機器學習的庫。例如,雖然Scipy1包含一些聚類演算法,但它的主焦點不是機器學習而是全面的科學計算工具集。因此我們排除了Scipy(儘管我們也使用它!)。

另一個需要提到的是,我們同樣會根據與其他科學計算庫的整合效果來評估這些函式庫,因為機器學習(有監督的或無監督的)也是資料處理系統的一部分。如果你使用的函式庫與資料處理系統其他的函式庫不相配,你就要花大量時間創建不同函式庫之間的中間層。在工具集中有個很棒的函式庫很重要,但這個函式庫能與其他函式庫良好整合也同樣重要。

如果你擅長其他語言,但也想使用Python包,我們也簡單地描述如何與Python整合來使用這篇文章列出的函式庫。

Scikit-Learn

Scikit Learn7是我們在CB Insights選用的機器學習工具。我們用它進行分類、特徵選擇、特徵提取和聚集。

我們最愛的一點是它擁有易用的一致性API,並提供了**很多**開箱可用的求值、診斷和交叉驗證方法(是不是聽起來很熟悉?Python也提供了「電池已備(譯註:指開箱可用)」的方法)。錦上添花的是它底層使用Scipy資料結構,與Python中其餘使用Scipy、Numpy、Pandas和Matplotlib進行科學計算的部分適應地很好。

因此,如果你想視覺化分類器的性能(比如,使用精確率與反饋率(precision-recall)圖表,或者接收者操作特徵(Receiver Operating Characteristics,ROC)曲線),Matplotlib可以幫助進行快速可視化。

考慮到花在清理和建構資料的時間,使用這個函式庫會非常方便,因為它可以緊密整合到其他科學計算套件上。

另外,它還包含有限的自然語言處理特徵提取能力,以及詞袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency演算法)、預處理(停用詞/stop-words,自訂預處理,分析器)。

此外,如果你想快速對小資料集(toy dataset)進行不同基準測試的話,它自帶的資料集模組提供了常見且有用的資料集。你也可以根據這些資料集建立自己的小資料集,這樣在將模型應用到真實世界之前,你可以按照自己的目的來檢驗模型是否符合期望。對參數最優化和參數調整,它也提供了網格搜尋和隨機搜尋。

如果沒有強大的社群支持,或是維護得不好,這些特性都不可能實現。我們期盼它的第一個穩定發行版。

Statsmodels

Statsmodels是另一個聚焦在統計模型上的強大的函式庫,主要用於預測性和探索性分析。如果你想擬合線性模型、進行統計分析,或預測性建模,那麼Statsmodels非常適合。它提供的統計測試相當全面,涵蓋了大部分情況的驗證任務。

如果你是R或S的用戶,它也提供了某些統計模型的R語法。它的模型同時也接受Numpy數組和Pandas資料幀,讓中間資料結構成為過去!

PyMC

PyMC是做**貝葉斯曲線**的工具。它包含貝葉斯模型、統計分佈和模型收斂的診斷工具,也包含一些層次模型。如果想進行貝葉斯分析,你應該看看。

Shogun

Shogun1是聚焦在支援向量機(Support Vector Machines, SVM)上的機器學習工具箱,用C++寫。它正處於積極開發和維護中,提供了Python接口,也是文檔化最好的接口。但是,相對於Scikit-learn,我們發現它的API比較難用。而且,也沒提供很多開箱可用的診斷和求值演算法。但是,速度是個很大的優勢。

Gensim

Gensim被定義為「人們的主題建模工具(topic modeling for humans)」。在它的主頁上描述,其焦點是狄利克雷劃分(Latent Dirichlet Allocation, LDA)及變體。不同於其他包,它支援自然語言處理,能將NLP和其他機器學習演算法更容易組合在一起。

如果你的領域在NLP,並想進行聚集和基本的分類,你可以看看。目前,它們引入了Google的基於遞歸神經網路(Recurrent Neural Network)的文本表示法word2vec。這個函式庫只使用Python編寫。

Orange

Orange是這篇文章所列舉的所有函式庫中唯一帶有圖形使用者介面(Graphical User Interface,GUI)的。對分類、聚集和特徵選擇方法而言,它是相當全面的,還有些交叉驗證的方法。在某些方面比Scikit-learn還要好(分類方法、一些預處理能力),但與其他科學計算系統(Numpy, Scipy, Matplotlib, Pandas)的適配上比不上Scikit-learn。

但是,包含GUI是個很重要的優勢。你可以視覺化交叉驗證的結果、模型和特徵選擇方法(某些功能需要安裝Graphviz)。對大多數演算法,Orange都有自己的資料結構,所以你需要將資料包裝成Orange相容的資料結構,這使得其學習曲線更陡。

PyMVPA

PyMVPA是另一個統計學習函式庫,API上與Scikit-learn很像。包含交叉驗證和診斷工具,但沒有Scikit-learn全面。

深度學習

儘管深度學習是機器學習的子節,我們在這裡創建單獨一節的原因是,它最新吸引了Google和Facebook人才招募部門的許多注意。

Theano

Theano是最成熟的深度學習庫。它提供了不錯的資料結構(張量,tensor)來表示神經網路的層,對線性代數來說很高效,與Numpy的陣列類似。要注意的是,它的API可能不是很直觀,使用者的學習曲線會很高。有很多基於Theano的庫都在利用其資料結構。它同時支援開箱可用的GPU編程。

PyLearn

還有另一個基於Theano的函式庫,PyLearn2,它給Theano引入了模組化和可配置性,你可以透過不同的設定檔來建立神經網絡,這樣嘗試不同的參數會更容易。可以說,如果分離神經網路的參數和屬性到配置文件,它的模組化能力更強大。

Decaf

Decaf是最近由UC Berkeley發布的深度學習庫,在Imagenet分類挑戰中測試發現,其神經網路實作是很先進的(state of art)。

Nolearn

如果你想在深度學習中也能使用優秀的Scikit-learn函式庫API,封裝了Decaf的Nolearn會讓你更輕鬆地使用它。它是對Decaf的包裝,與Scikit-learn相容(大部分),使得Decaf更不可思議。

OverFeat

OverFeat是最近貓vs.狗(kaggle挑戰)4的勝利者,它使用C++編寫,也包含一個Python包裝器(還有Matlab和Lua)。透過Torch庫使用GPU,所以速度很快。也贏得了ImageNet分類的偵測與在地化挑戰。如果你的領域是電腦視覺,你可能需要看看。

Hebel

Hebel是另一個具有GPU支援的神經網路庫,開箱可用。你可以透過YAML檔案(與Pylearn2類似)決定神經網路的屬性,提供了將神級網路和程式碼友善分離的方式,可以快速地運行模型。由於開發不久,就深度和廣度上說,文件很匱乏。就神經網路模型來說,也是有限制的,因為只支援一種神經網路模型(正向回饋,feed-forward)。

但是,它是用純Python編寫,將會是很友善的函式庫,因為包含很多實用函數,像是調度器和監視器,其他函式庫中我們並沒有發現這些功能。

Neurolab

NeuroLab是另一個API友善(與Matlabapi類似)的神經網路函式庫。與其他庫不同,它包含遞歸神經網路(Recurrent Neural Network,RNN)實現的不同變體。如果你想使用RNN,這個函式庫是同類API中最好的選擇之一。

與其他語言整合

你不了解Python但是很擅長其他語言?不要絕望!Python(還有其他)的一個強項就是它是一個完美的膠水語言,你可以使用自己常用的程式語言,透過Python來存取這些函式庫。以下適合各種程式語言的套件可以用於將其他語言與Python組合在一起:

R -> RPython

Matlab -> matpython

#Java - > Jython

Lua -> Lunatic Python

Julia -> PyCall.jl

不活躍的庫

這些庫超過一年沒有發布任何更新,我們列出是因為你有可能會有用,但是這些庫不太可能會進行BUG修復,特別是未來進行增強。

MDP2MlPy

FFnet

PyBrain

以上是總結Python常用的機器學習庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
學習Python:2小時的每日學習是否足夠?學習Python:2小時的每日學習是否足夠?Apr 18, 2025 am 12:22 AM

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Web開發的Python:關鍵應用程序Web開發的Python:關鍵應用程序Apr 18, 2025 am 12:20 AM

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python vs.C:探索性能和效率Python vs.C:探索性能和效率Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

python在行動中:現實世界中的例子python在行動中:現實世界中的例子Apr 18, 2025 am 12:18 AM

Python在現實世界中的應用包括數據分析、Web開發、人工智能和自動化。 1)在數據分析中,Python使用Pandas和Matplotlib處理和可視化數據。 2)Web開發中,Django和Flask框架簡化了Web應用的創建。 3)人工智能領域,TensorFlow和PyTorch用於構建和訓練模型。 4)自動化方面,Python腳本可用於復製文件等任務。

Python的主要用途:綜合概述Python的主要用途:綜合概述Apr 18, 2025 am 12:18 AM

Python在數據科學、Web開發和自動化腳本領域廣泛應用。 1)在數據科學中,Python通過NumPy、Pandas等庫簡化數據處理和分析。 2)在Web開發中,Django和Flask框架使開發者能快速構建應用。 3)在自動化腳本中,Python的簡潔性和標準庫使其成為理想選擇。

Python的主要目的:靈活性和易用性Python的主要目的:靈活性和易用性Apr 17, 2025 am 12:14 AM

Python的靈活性體現在多範式支持和動態類型系統,易用性則源於語法簡潔和豐富的標準庫。 1.靈活性:支持面向對象、函數式和過程式編程,動態類型系統提高開發效率。 2.易用性:語法接近自然語言,標準庫涵蓋廣泛功能,簡化開發過程。

Python:多功能編程的力量Python:多功能編程的力量Apr 17, 2025 am 12:09 AM

Python因其簡潔與強大而備受青睞,適用於從初學者到高級開發者的各種需求。其多功能性體現在:1)易學易用,語法簡單;2)豐富的庫和框架,如NumPy、Pandas等;3)跨平台支持,可在多種操作系統上運行;4)適合腳本和自動化任務,提升工作效率。

每天2小時學習Python:實用指南每天2小時學習Python:實用指南Apr 17, 2025 am 12:05 AM

可以,在每天花費兩個小時的時間內學會Python。 1.制定合理的學習計劃,2.選擇合適的學習資源,3.通過實踐鞏固所學知識,這些步驟能幫助你在短時間內掌握Python。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。