原文:http://qxde01.blog.163.com/blog/static/67335744201368101922991/
Python在科學計算領域妙真,有兩個重要的擴展模塊:Numpy和Scipy陆赋。其中Numpy是一個用python實現(xiàn)的科學計算包柱嫌。包括:
一個強大的N維數(shù)組對象Array庄岖;
比較成熟的(廣播)函數(shù)庫;
用于整合C/C++和Fortran代碼的工具包玩郊;
實用的線性代數(shù)夸政、傅里葉變換和隨機數(shù)生成函數(shù)。
SciPy是一個開源的Python算法庫和數(shù)學工具包煎楣,SciPy包含的模塊有最優(yōu)化、線性代數(shù)车伞、積分择懂、插值、特殊函數(shù)另玖、快速傅里葉變換困曙、信號處理和圖像處理表伦、常微分方程求解和其他科學與工程中常用的計算。其功能與軟件MATLAB慷丽、Scilab和GNU Octave類似蹦哼。
Numpy和Scipy常常結(jié)合著使用,Python大多數(shù)機器學習庫都依賴于這兩個模塊要糊,繪圖和可視化依賴于matplotlib模塊纲熏,matplotlib的風格與matlab類似。Python機器學習庫非常多锄俄,而且大多數(shù)開源局劲,主要有:
scikit-learn是一個基于SciPy和Numpy的開源機器學習模塊,包括分類奶赠、回歸鱼填、聚類系列算法,主要算法有SVM毅戈、邏輯回歸苹丸、樸素貝葉斯、Kmeans竹祷、DBSCAN等谈跛,目前由INRI資助,偶爾Google也資助一點塑陵。
項目主頁:
https://pypi.python.org/pypi/scikit-learn/
https://github.com/scikit-learn/scikit-learn
NLTK(Natural Language Toolkit)是Python的自然語言處理模塊感憾,包括一系列的字符處理和語言統(tǒng)計模型。NLTK常用于學術(shù)研究和教學令花,應用的領域有語言學阻桅、認知科學、人工智能兼都、信息檢索嫂沉、機器學習等。NLTK提供超過50個語料庫和詞典資源扮碧,文本處理庫包括分類趟章、分詞、詞干提取慎王、解析蚓土、語義推理±涤伲可穩(wěn)定運行在Windows, Mac OS X和Linux平臺上.
項目主頁:
http://sourceforge.net/projects/nltk/
https://pypi.python.org/pypi/nltk/
Mlpy是基于NumPy/SciPy的Python機器學習模塊蜀漆,它是Cython的擴展應用。包含的機器學習算法有:
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), Basicperceptron, 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)
項目主頁:
http://sourceforge.net/projects/mlpy
Shogun是一個開源的大規(guī)模機器學習工具箱咱旱。目前Shogun的機器學習功能分為幾個部分:feature表示确丢,feature預處理绷耍,核函數(shù)表示,核函數(shù)標準化,距離表示鲜侥,分類器表示褂始,聚類方法,分布描函,性能評價方法病袄,回歸方法,結(jié)構(gòu)化輸出學習器赘阀。
SHOGUN的核心由C++實現(xiàn),提供Matlab脑奠、R基公、Octave、Python接口宋欺。主要應用在linux平臺上轰豆。
項目主頁:
http://www.shogun-toolbox.org/
The Modular toolkit for Data Processing (MDP),用于數(shù)據(jù)處理的模塊化工具包齿诞,一個Python數(shù)據(jù)處理框架酸休。
從用戶的觀點,MDP是能夠被整合到數(shù)據(jù)處理序列和更復雜的前饋網(wǎng)絡結(jié)構(gòu)的一批監(jiān)督學習和非監(jiān)督學習算法和其他數(shù)據(jù)處理單元祷杈。計算依照速度和內(nèi)存需求而高效的執(zhí)行斑司。從科學開發(fā)者的觀點,MDP是一個模塊框架但汞,它能夠被容易地擴展宿刮。新算法的實現(xiàn)是容易且直觀的。新實現(xiàn)的單元然后被自動地與程序庫的其余部件進行整合私蕾。MDP在神經(jīng)科學的理論研究背景下被編寫僵缺,但是它已經(jīng)被設計為在使用可訓練數(shù)據(jù)處理算法的任何情況中都是有用的。其站在用戶一邊的簡單性踩叭,各種不同的隨時可用的算法磕潮,及應用單元的可重用性,使得它也是一個有用的教學工具容贝。
項目主頁:
http://mdp-toolkit.sourceforge.net/
https://pypi.python.org/pypi/MDP/
PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network)是Python的一個機器學習模塊自脯,它的目標是為機器學習任務提供靈活、易應嗤疯、強大的機器學習算法冤今。(這名字很霸氣)
PyBrain正如其名,包括神經(jīng)網(wǎng)絡茂缚、強化學習(及二者結(jié)合)戏罢、無監(jiān)督學習屋谭、進化算法。因為目前的許多問題需要處理連續(xù)態(tài)和行為空間龟糕,必須使用函數(shù)逼近(如神經(jīng)網(wǎng)絡)以應對高維數(shù)據(jù)桐磁。PyBrain以神經(jīng)網(wǎng)絡為核心,所有的訓練方法都以神經(jīng)網(wǎng)絡為一個實例讲岁。
項目主頁:
https://github.com/pybrain/pybrain/
BigML使得機器學習為數(shù)據(jù)驅(qū)動決策和預測變得容易我擂,BigML使用容易理解的交互式操作創(chuàng)建優(yōu)雅的預測模型。BigML使用BigML.io,捆綁Python缓艳。
項目主頁:
https://pypi.python.org/pypi/bigml
PyML是一個Python機器學習工具包校摩,為各分類和回歸方法提供靈活的架構(gòu)。它主要提供特征選擇阶淘、模型選擇衙吩、組合分類器、分類評估等功能溪窒。
項目主頁:
http://cmgm.stanford.edu/~asab/pyml/tutorial/
Milk是Python的一個機器學習工具箱坤塞,其重點是提供監(jiān)督分類法與幾種有效的分類分析:SVMs(基于libsvm),K-NN澈蚌,隨機森林經(jīng)濟和決策樹摹芙。它還可以進行特征選擇。這些分類可以在許多方面相結(jié)合宛瞄,形成不同的分類系統(tǒng)浮禾。
對于無監(jiān)督學習,它提供K-means和affinity propagation聚類算法坛悉。
項目主頁:
https://pypi.python.org/pypi/milk/
http://luispedro.org/software/milk
PyMVPA(Multivariate Pattern Analysis in Python)是為大數(shù)據(jù)集提供統(tǒng)計學習分析的Python工具包伐厌,它提供了一個靈活可擴展的框架。它提供的功能有分類裸影、回歸挣轨、特征選擇、數(shù)據(jù)導入導出轩猩、可視化等
項目主頁:
https://github.com/PyMVPA/PyMVPA
Pattern是Python的web挖掘模塊卷扮,它綁定了Google、Twitter均践、Wikipedia API晤锹,提供網(wǎng)絡爬蟲、HTML解析功能彤委,文本分析包括淺層規(guī)則解析鞭铆、WordNet接口、句法與語義分析焦影、TF-IDF车遂、LSA等封断,還提供聚類、分類和圖網(wǎng)絡可視化的功能舶担。
項目主頁:
http://www.clips.ua.ac.be/pages/pattern
https://pypi.python.org/pypi/Pattern
Pyrallel(Parallel Data Analytics in Python)基于分布式計算模式的機器學習和半交互式的試驗項目坡疼,可在小型集群上運行,適用范圍:
lfocus on small to medium dataset that fits in memory on a small (10+ nodes) to medium cluster (100+ nodes).
lfocus on small to medium data (with data locality when possible).
lfocus on CPU bound tasks (e.g. training Random Forests) while trying to limit disk / network access to a minimum.
ldo not focus on HA / Fault Tolerance (yet).
ldo 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.
項目主頁:
https://pypi.python.org/pypi/pyrallel
http://github.com/pydata/pyrallel
Monte ( machine learning in pure Python)是一個純Python機器學習庫衣陶。它可以迅速構(gòu)建神經(jīng)網(wǎng)絡柄瑰、條件隨機場、邏輯回歸等模型剪况,使用inline-C優(yōu)化教沾,極易使用和擴展。
項目主頁:
https://pypi.python.org/pypi/Monte
http://montepython.sourceforge.net
Orange是一個基于組件的數(shù)據(jù)挖掘和機器學習軟件套裝译断,它的功能即友好详囤,又很強大,快速而又多功能的可視化編程前端镐作,以便瀏覽數(shù)據(jù)分析和可視化,基綁定了Python以進行腳本開發(fā)隆箩。它包含了完整的一系列的組件以進行數(shù)據(jù)預處理该贾,并提供了數(shù)據(jù)帳目,過渡捌臊,建模杨蛋,模式評估和勘探的功能。其由C++和Python開發(fā)理澎,它的圖形庫是由跨平臺的Qt框架開發(fā)逞力。
項目主頁:
https://pypi.python.org/pypi/Orange/
Theano是一個Python庫,用來定義糠爬、優(yōu)化和模擬數(shù)學表達式計算寇荧,用于高效的解決多維數(shù)組的計算問題。Theano的特點:
l緊密集成Numpy
l高效的數(shù)據(jù)密集型GPU計算
l高效的符號微分運算
l高速和穩(wěn)定的優(yōu)化
l動態(tài)生成c代碼
l廣泛的單元測試和自我驗證
自2007年以來执隧,Theano已被廣泛應用于科學運算揩抡。theano使得構(gòu)建深度學習模型更加容易,可以快速實現(xiàn)下列模型:
lLogistic Regression
lMultilayer perceptron
lDeep Convolutional Network
lAuto Encoders, Denoising Autoencoders
lStacked Denoising Auto-Encoders
lRestricted Boltzmann Machines
lDeep Belief Networks
lHMC Sampling
lContractive auto-encoders
Theano镀琉,一位希臘美女峦嗤,Croton最有權(quán)勢的Milo的女兒,后來成為了畢達哥拉斯的老婆屋摔。
項目主頁:
http://deeplearning.net/tutorial/
https://pypi.python.org/pypi/Theano
16.Pylearn2
Pylearn2建立在theano上烁设,部分依賴scikit-learn上,目前Pylearn2正處于開發(fā)中钓试,將可以處理向量装黑、圖像副瀑、視頻等數(shù)據(jù),提供MLP曹体、RBM俗扇、SDA等深度學習模型。Pylearn2的目標是:
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).
項目主頁:
http://deeplearning.net/software/pylearn2/
https://github.com/lisa-lab/pylearn2
還有其他的一些Python的機器學習庫箕别,如:
pmll(https://github.com/pavlov99/pmll)
pymining(https://github.com/bartdag/pymining)
ease (https://github.com/edx/ease)
textmining(http://www.christianpeccei.com/textmining/)
更多的機器學習庫可通過https://pypi.python.org/pypi查找铜幽。