原文:http://qxde01.blog.163.com/blog/static/67335744201368101922991/
Python在科學(xué)計(jì)算領(lǐng)域,有兩個(gè)重要的擴(kuò)展模塊:Numpy和Scipy。其中Numpy是一個(gè)用python實(shí)現(xiàn)的科學(xué)計(jì)算包。包括:
一個(gè)強(qiáng)大的N維數(shù)組對(duì)象Array;
比較成熟的(廣播)函數(shù)庫;
用于整合C/C++和Fortran代碼的工具包;
實(shí)用的線性代數(shù)、傅里葉變換和隨機(jī)數(shù)生成函數(shù)。
SciPy是一個(gè)開源的Python算法庫和數(shù)學(xué)工具包,SciPy包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算。其功能與軟件MATLAB、Scilab和GNU Octave類似。
Numpy和Scipy常常結(jié)合著使用,Python大多數(shù)機(jī)器學(xué)習(xí)庫都依賴于這兩個(gè)模塊,繪圖和可視化依賴于matplotlib模塊,matplotlib的風(fēng)格與matlab類似。Python機(jī)器學(xué)習(xí)庫非常多,而且大多數(shù)開源,主要有:
1. scikit-learn
scikit-learn 是一個(gè)基于SciPy和Numpy的開源機(jī)器學(xué)習(xí)模塊,包括分類、回歸、聚類系列算法,主要算法有SVM、邏輯回歸、樸素貝葉斯、Kmeans、DBSCAN等,目前由INRI 資助,偶爾Google也資助一點(diǎn)。
項(xiàng)目主頁:
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的自然語言處理模塊,包括一系列的字符處理和語言統(tǒng)計(jì)模型。NLTK 常用于學(xué)術(shù)研究和教學(xué),應(yīng)用的領(lǐng)域有語言學(xué)、認(rèn)知科學(xué)、人工智能、信息檢索、機(jī)器學(xué)習(xí)等。 NLTK提供超過50個(gè)語料庫和詞典資源,文本處理庫包括分類、分詞、詞干提取、解析、語義推理??煞€(wěn)定運(yùn)行在Windows, Mac OS X和Linux平臺(tái)上.
項(xiàng)目主頁:
http://sourceforge.net/projects/nltk/
https://pypi.python.org/pypi/nltk/
http://nltk.org/
3. Mlpy
Mlpy是基于NumPy/SciPy的Python機(jī)器學(xué)習(xí)模塊,它是Cython的擴(kuò)展應(yīng)用。包含的機(jī)器學(xué)習(xí)算法有:
l 回歸
least squares, ridge regression, least angle regression, elastic net, kernel ridge regression, support vector machines (SVM), partial least squares (PLS)
l 分類
linear discriminant analysis (LDA), Basic perceptron, Elastic Net, logistic regression, (Kernel) Support Vector Machines (SVM), Diagonal Linear Discriminant Analysis (DLDA), Golub Classifier, Parzen-based, (kernel) Fisher Discriminant Classifier, k-nearest neighbor, Iterative RELIEF, Classification Tree, Maximum Likelihood Classifier
l 聚類
hierarchical clustering, Memory-saving Hierarchical Clustering, k-means
l 維度約減
(Kernel) Fisher discriminant analysis (FDA), Spectral Regression Discriminant Analysis (SRDA), (kernel) Principal component analysis (PCA)
項(xiàng)目主頁:
http://sourceforge.net/projects/mlpy
https://mlpy.fbk.eu/
4. Shogun
Shogun是一個(gè)開源的大規(guī)模機(jī)器學(xué)習(xí)工具箱。目前Shogun的機(jī)器學(xué)習(xí)功能分為幾個(gè)部分:feature表示,feature預(yù)處理,核函數(shù)表示,核函數(shù)標(biāo)準(zhǔn)化,距離表示,分類器表示,聚類方法,分布,性能評(píng)價(jià)方法,回歸方法,結(jié)構(gòu)化輸出學(xué)習(xí)器。
SHOGUN 的核心由C++實(shí)現(xiàn),提供 Matlab、 R、 Octave、 Python接口。主要應(yīng)用在linux平臺(tái)上。
項(xiàng)目主頁:
http://www.shogun-toolbox.org/
5. MDP
The Modular toolkit for Data Processing (MDP) ,用于數(shù)據(jù)處理的模塊化工具包,一個(gè)Python數(shù)據(jù)處理框架。
從用戶的觀點(diǎn),MDP是能夠被整合到數(shù)據(jù)處理序列和更復(fù)雜的前饋網(wǎng)絡(luò)結(jié)構(gòu)的一批監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)算法和其他數(shù)據(jù)處理單元。計(jì)算依照速度和內(nèi)存需求而高效的執(zhí)行。從科學(xué)開發(fā)者的觀點(diǎn),MDP是一個(gè)模塊框架,它能夠被容易地?cái)U(kuò)展。新算法的實(shí)現(xiàn)是容易且直觀的。新實(shí)現(xiàn)的單元然后被自動(dòng)地與程序庫的其余部件進(jìn)行整合。MDP在神經(jīng)科學(xué)的理論研究背景下被編寫,但是它已經(jīng)被設(shè)計(jì)為在使用可訓(xùn)練數(shù)據(jù)處理算法的任何情況中都是有用的。其站在用戶一邊的簡單性,各種不同的隨時(shí)可用的算法,及應(yīng)用單元的可重用性,使得它也是一個(gè)有用的教學(xué)工具。
項(xiàng)目主頁:
http://mdp-toolkit.sourceforge.net/
https://pypi.python.org/pypi/MDP/
6. PyBrain
PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network)是Python的一個(gè)機(jī)器學(xué)習(xí)模塊,它的目標(biāo)是為機(jī)器學(xué)習(xí)任務(wù)提供靈活、易應(yīng)、強(qiáng)大的機(jī)器學(xué)習(xí)算法。(這名字很霸氣)
PyBrain正如其名,包括神經(jīng)網(wǎng)絡(luò)、強(qiáng)化學(xué)習(xí)(及二者結(jié)合)、無監(jiān)督學(xué)習(xí)、進(jìn)化算法。因?yàn)槟壳暗脑S多問題需要處理連續(xù)態(tài)和行為空間,必須使用函數(shù)逼近(如神經(jīng)網(wǎng)絡(luò))以應(yīng)對(duì)高維數(shù)據(jù)。PyBrain以神經(jīng)網(wǎng)絡(luò)為核心,所有的訓(xùn)練方法都以神經(jīng)網(wǎng)絡(luò)為一個(gè)實(shí)例。
項(xiàng)目主頁:
http://www.pybrain.org/
https://github.com/pybrain/pybrain/
7. BigML
BigML 使得機(jī)器學(xué)習(xí)為數(shù)據(jù)驅(qū)動(dòng)決策和預(yù)測變得容易,BigML使用容易理解的交互式操作創(chuàng)建優(yōu)雅的預(yù)測模型。BigML使用BigML.io,捆綁Python。
項(xiàng)目主頁:
https://bigml.com/
https://pypi.python.org/pypi/bigml
http://bigml.readthedocs.org/
8. PyML
PyML是一個(gè)Python機(jī)器學(xué)習(xí)工具包, 為各分類和回歸方法提供靈活的架構(gòu)。它主要提供特征選擇、模型選擇、組合分類器、分類評(píng)估等功能。
項(xiàng)目主頁:
http://cmgm.stanford.edu/~asab/pyml/tutorial/
http://pyml.sourceforge.net/
9. Milk
Milk是Python的一個(gè)機(jī)器學(xué)習(xí)工具箱,其重點(diǎn)是提供監(jiān)督分類法與幾種有效的分類分析:SVMs(基于libsvm),K-NN,隨機(jī)森林經(jīng)濟(jì)和決策樹。它還可以進(jìn)行特征選擇。這些分類可以在許多方面相結(jié)合,形成不同的分類系統(tǒng)。
對(duì)于無監(jiān)督學(xué)習(xí),它提供K-means和affinity propagation聚類算法。
項(xiàng)目主頁:
https://pypi.python.org/pypi/milk/
http://luispedro.org/software/milk
10. PyMVPA
PyMVPA(Multivariate Pattern Analysis in Python)是為大數(shù)據(jù)集提供統(tǒng)計(jì)學(xué)習(xí)分析的Python工具包,它提供了一個(gè)靈活可擴(kuò)展的框架。它提供的功能有分類、回歸、特征選擇、數(shù)據(jù)導(dǎo)入導(dǎo)出、可視化等
項(xiàng)目主頁:
http://www.pymvpa.org/
https://github.com/PyMVPA/PyMVPA
11. Pattern
Pattern是Python的web挖掘模塊,它綁定了 Google、Twitter 、Wikipedia API,提供網(wǎng)絡(luò)爬蟲、HTML解析功能,文本分析包括淺層規(guī)則解析、WordNet接口、句法與語義分析、TF-IDF、LSA等,還提供聚類、分類和圖網(wǎng)絡(luò)可視化的功能。
項(xiàng)目主頁:
http://www.clips.ua.ac.be/pages/pattern
https://pypi.python.org/pypi/Pattern
12. pyrallel
Pyrallel(Parallel Data Analytics in Python)基于分布式計(jì)算模式的機(jī)器學(xué)習(xí)和半交互式的試驗(yàn)項(xiàng)目,可在小型集群上運(yùn)行,適用范圍:
l focus on small to medium dataset that fits in memory on a small (10+ nodes) to medium cluster (100+ nodes).
l focus on small to medium data (with data locality when possible).
l focus on CPU bound tasks (e.g. training Random Forests) while trying to limit disk / network access to a minimum.
l do not focus on HA / Fault Tolerance (yet).
l do not try to invent new set of high level programming abstractions (yet): use a low level programming model (IPython.parallel) to finely control the cluster elements and messages transfered and help identify what are the practical underlying constraints in distributed machine learning setting.
項(xiàng)目主頁:
https://pypi.python.org/pypi/pyrallel
http://github.com/pydata/pyrallel
13. Monte
Monte ( machine learning in pure Python)是一個(gè)純Python機(jī)器學(xué)習(xí)庫。它可以迅速構(gòu)建神經(jīng)網(wǎng)絡(luò)、條件隨機(jī)場、邏輯回歸等模型,使用inline-C優(yōu)化,極易使用和擴(kuò)展。
項(xiàng)目主頁:
https://pypi.python.org/pypi/Monte
http://montepython.sourceforge.net
14. Orange
Orange 是一個(gè)基于組件的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)軟件套裝,它的功能即友好,又很強(qiáng)大,快速而又多功能的可視化編程前端,以便瀏覽數(shù)據(jù)分析和可視化,基綁定了 Python以進(jìn)行腳本開發(fā)。它包含了完整的一系列的組件以進(jìn)行數(shù)據(jù)預(yù)處理,并提供了數(shù)據(jù)帳目,過渡,建模,模式評(píng)估和勘探的功能。其由C++ 和 Python開發(fā),它的圖形庫是由跨平臺(tái)的Qt框架開發(fā)。
項(xiàng)目主頁:
https://pypi.python.org/pypi/Orange/
http://orange.biolab.si/
15. Theano
Theano 是一個(gè) Python 庫,用來定義、優(yōu)化和模擬數(shù)學(xué)表達(dá)式計(jì)算,用于高效的解決多維數(shù)組的計(jì)算問題。Theano的特點(diǎn):
l 緊密集成Numpy
l 高效的數(shù)據(jù)密集型GPU計(jì)算
l 高效的符號(hào)微分運(yùn)算
l 高速和穩(wěn)定的優(yōu)化
l 動(dòng)態(tài)生成c代碼
l 廣泛的單元測試和自我驗(yàn)證
自2007年以來,Theano已被廣泛應(yīng)用于科學(xué)運(yùn)算。theano使得構(gòu)建深度學(xué)習(xí)模型更加容易,可以快速實(shí)現(xiàn)下列模型:
l Logistic Regression
l Multilayer perceptron
l Deep Convolutional Network
l Auto Encoders, Denoising Autoencoders
l Stacked Denoising Auto-Encoders
l Restricted Boltzmann Machines
l Deep Belief Networks
l HMC Sampling
l Contractive auto-encoders
Theano,一位希臘美女,Croton最有權(quán)勢的Milo的女兒,后來成為了畢達(dá)哥拉斯的老婆。
項(xiàng)目主頁:
http://deeplearning.net/tutorial/
https://pypi.python.org/pypi/Theano
**Pylearn2**
Pylearn2建立在theano上,部分依賴scikit-learn上,目前Pylearn2正處于開發(fā)中,將可以處理向量、圖像、視頻等數(shù)據(jù),提供MLP、RBM、SDA等深度學(xué)習(xí)模型。Pylearn2的目標(biāo)是:
Researchers add features as they need them. We avoid getting bogged down by too much top-down planning in advance.
A machine learning toolbox for easy scientific experimentation.
All models/algorithms published by the LISA lab should have reference implementations in Pylearn2.
Pylearn2 may wrap other libraries such as scikits.learn when this is practical
Pylearn2 differs from scikits.learn in that Pylearn2 aims to provide great flexibility and make it possible for a researcher to do almost anything, while scikits.learn aims to work as a “black box” that can produce good results even if the user does not understand the implementation
Dataset interface for vector, images, video, ...
Small framework for all what is needed for one normal MLP/RBM/SDA/Convolution experiments.
Easy reuse of sub-component of Pylearn2.
Using one sub-component of the library does not force you to use / learn to use all of the other sub-components if you choose not to.
Support cross-platform serialization of learned models.
Remain approachable enough to be used in the classroom (IFT6266 at the University of Montreal).
項(xiàng)目主頁:
http://deeplearning.net/software/pylearn2/
https://github.com/lisa-lab/pylearn2
還有其他的一些Python的機(jī)器學(xué)習(xí)庫,如:
pmll(https://github.com/pavlov99/pmll)
pymining(https://github.com/bartdag/pymining)
ease (https://github.com/edx/ease)
textmining(http://www.christianpeccei.com/textmining/)
更多的機(jī)器學(xué)習(xí)庫可通過https://pypi.python.org/pypi查找。