1. 程式人生 > >python中常用的工具包

python中常用的工具包

一、Python中常用的科學計算工具包:

我們最瞭解的科學計算工具可能是Matlab,它能進行集數值計算,視覺化工具及交互於一身,可惜的是它是一個商業產品。開源方面除了GNU Octave在嘗試做一個類似Matlab的工具包外,Python的這幾個工具包集合到一起也可以替代Matlab的相應功能:NumPy+SciPy+Matplotlib+iPython。同時,這幾個工具包,特別是NumPy和SciPy,也是很多Python文字處理 & 機器學習 & 資料探勘工具包的基礎,非常重要。

1. Numpy

Numpy是使用Python進行科學計算的基礎庫,主要提供高效能的N維陣列實現以及計算能力,還提供了和其它語言如C/C++整合的能力,此外還實現了一些基礎的數學演算法,如線性代數相關、傅立葉變換及隨機數生成等。

NumPy提供了兩種基本的物件:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是儲存單一資料型別的多維陣列,而ufunc則是能夠對陣列進行處理的函式。

2. SciPy:Scientific Computing Tools for Python

“SciPy是一個開源的Python演算法庫和數學工具包,SciPy包含的模組有最優化、線性代數、積分、插值、特殊函式、快速傅立葉變換、訊號處理和影象處理、常微分方程求解和其他科學與工程中常用的計算。其功能與軟體MATLAB、Scilab和GNU Octave類似。 Numpy和Scipy常常結合著使用,Python大多數機器學習庫都依賴於這兩個模組。”—-引用自“Python機器學習庫”

3.Matplotlib

Matplotlib是python資料視覺化工具包。是python最著名的繪相簿,它提供了一整套和matlab相似的命令API,十分適合互動式地進行製圖。而且也可以方便地將它作為繪圖控制元件,嵌入GUI應用程式中。Matplotlib可以配合ipython shell使用,提供不亞於Matlab的繪圖體驗,總之用過了都說好。

在IPython控制檯使用Matplotlib,可以使用ipython--matplotlib命令來啟動IPython控制檯程式;如果要在IPython notebook裡使用Matplotlib,則在notebook的開始位置插入%matplotlib inline魔術命令即可。

IPython為Matplotlib專門提供了特殊的互動模式。IPython的Matplotlib模式有兩個優點,一是提供了非阻塞的畫圖操作,二是不需要顯示地呼叫show()方法來顯示畫出來的圖片。

二. Python 機器學習 & 資料探勘常用工具包

機器學習和資料探勘這兩個概念不太好區分,這裡就放到一起了。這方面的開源Python工具包有很多,這裡先從熟悉的講起,再補充其他來源的資料,也歡迎大家補充。

2.1 scikit-learn: Machine Learning in Python

首先是scikit-learn,scikit-learn是一個基於NumPy, SciPy, Matplotlib的開源機器學習工具包,主要涵蓋分類,迴歸和聚類演算法,例如SVM, 邏輯迴歸,樸素貝葉斯,隨機森林,k-means等演算法,程式碼和文件都非常不錯,在許多Python專案中都有應用。例如在我們熟悉的NLTK中。scikit-learn提供了一致的呼叫介面。它基於Numpy和scipy等Python數值計算庫,提供了高效的演算法實現。總結起來,scikit-learn工具包有以下幾個優點。

一、文件齊全:官方文件齊全,更新及時。

二、介面易用:針對所有演算法提供了一致的介面呼叫規則,不管是KNN、K-Means還是PCA.

三、演算法全面:涵蓋主流機器學習任務的演算法,包括迴歸演算法、分類演算法、聚類分析、資料降維處理等。

缺點是scikit-learn不支援分散式計算,不適合用來處理超大型資料。

2.2 Pandas: Python Data Analysis Library

Pandas是一個強大的時間序列資料處理工具包,Pandas是基於Numpy構建的,比Numpy的使用更簡單。最初開發的目的是為了分析財經資料,現在已經廣泛應用在Python資料分析領域中。Pandas,最基礎的資料結構是Series,用它來表達一行資料,可以理解為一維的陣列。另一個關鍵的資料結構為DataFrame,它表示的是二維陣列

Pandas是基於NumPy和Matplotlib開發的,主要用於資料分析和資料視覺化,它的資料結構DataFrame和R語言裡的data.frame很像,特別是對於時間序列資料有自己的一套分析機制。有一本書《Python for Data Analysis》,作者是Pandas的主力開發,依次介紹了iPython, NumPy, Pandas裡的相關功能,資料視覺化,資料清洗和加工,時間資料處理等,案例包括金融股票資料探勘等,相當不錯。

2.3 mlpy – Machine Learning Python

Mlpy是基於NumPy/SciPy的Python機器學習模組,它是Cython的擴充套件應用。包含的機器學習演算法很多,有時間單獨寫一篇記錄

2.4 PyBrain

“PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network)是Python的一個機器學習模組,它的目標是為機器學習任務提供靈活、易應、強大的機器學習演算法。(這名字很霸氣)

PyBrain正如其名,包括神經網路、強化學習(及二者結合)、無監督學習、進化演算法。因為目前的許多問題需要處理連續態和行為空間,必須使用函式逼近(如神經網路)以應對高維資料。PyBrain以神經網路為核心,所有的訓練方法都以神經網路為一個例項。”

2.5 Theano 

“Theano 是一個 Python 庫,用來定義、優化和模擬數學表示式計算,用於高效的解決多維陣列的計算問題。Theano的特點:緊密整合Numpy;高效的資料密集型GPU計算;高效的符號微分運算;高速和穩定的優化;動態生成c程式碼;廣泛的單元測試和自我驗證。自2007年以來,Theano已被廣泛應用於科學運算。theano使得構建深度學習模型更加容易,可以快速實現多種模型。PS:Theano,一位希臘美女,Croton最有權勢的Milo的女兒,後來成為了畢達哥拉斯的老婆。”

NLTK(Natural Language Toolkit)是Python的自然語言處理模組,包括一系列的字元處理和語言統計模型。NLTK 常用於學術研究和教學,應用的領域有語言學、認知科學、人工智慧、資訊檢索、機器學習等。 NLTK提供超過50個語料庫和詞典資源,文字處理庫包括分類、分詞、詞幹提取、解析、語義推理。可穩定執行在Windows, Mac OS X和Linux平臺上. 

專案主頁:

2.7  Pylearn2

“Pylearn2建立在theano上,部分依賴scikit-learn上,目前Pylearn2正處於開發中,將可以處理向量、影象、視訊等資料,提供MLP、RBM、SDA等深度學習模型。”

三. Python網頁爬蟲工具

一個真實的專案,一定是從獲取資料開始的。無論文字處理,機器學習和資料探勘,都需要資料,除了通過一些渠道購買或者下載的專業資料外,常常需要自己動手爬資料,這個時候,爬蟲就顯得格外重要了,幸好,Python提供了一批很不錯的網頁爬蟲工具框架,既能爬取資料,也能獲取和清洗資料,以前爬過一些火影和海賊的資料來玩:

3.1 Scrapy

鼎鼎大名的Scrapy,相信不少同學都有耳聞,課程圖譜中的很多課程都是依靠Scrapy抓去的,這方面的介紹文章有很多,推薦大牛pluskid早年的一篇文章:《Scrapy 輕鬆定製網路爬蟲》,歷久彌新。

3.2 Beautiful Soup

客觀的說,Beautifu Soup不完全是一套爬蟲工具,需要配合urllib使用,而是一套HTML / XML資料分析,清洗和獲取工具。

3.3 Python-Goose

Goose最早是用Java寫得,後來用Scala重寫,是一個Scala專案。Python-Goose用Python重寫,依賴了Beautiful Soup。前段時間用過,感覺很不錯,給定一個文章的URL, 獲取文章的標題和內容很方便。

四. Python文字處理工具

獲取文字資料之後,依據任務的不同,就需要進行基本的文字處理了,譬如對於英文來說,需要基本的tokenize,對於中文,則需要常見的中文分詞,進一步的話,無論英文中文,還可以詞性標註,句法分析,關鍵詞提取,文字分類,情感分析等等。這個方面,特別是面向英文領域,有很多優秀的工具包,我們一一道來。

4.1 NLTK — Natural Language Toolkit

搞自然語言處理的同學應該沒有人不知道NLTK吧,這裡也就不多說了。不過推薦兩本書籍給剛剛接觸NLTK或者需要詳細瞭解NLTK的同學: 一個是官方的《Natural Language Processing with Python》,以介紹NLTK裡的功能用法為主,同時附帶一些Python知識,同時國內陳濤同學友情翻譯了一箇中文版,這裡可以看到:推薦《用Python進行自然語言處理》中文翻譯-NLTK配套書;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,這本書要深入一些,會涉及到NLTK的程式碼結構,同時會介紹如何定製自己的語料和模型等,相當不錯。

4.2 Pattern

Pattern由比利時安特衛普大學CLiPS實驗室出品,客觀的說,Pattern不僅僅是一套文字處理工具,它更是一套web資料探勘工具,囊括了資料抓取模組(包括Google, Twitter, 維基百科的API,以及爬蟲和HTML分析器),文字處理模組(詞性標註,情感分析等),機器學習模組(VSM, 聚類,SVM)以及視覺化模組等,可以說,Pattern的這一整套邏輯也是這篇文章的組織邏輯,不過這裡我們暫且把Pattern放到文字處理部分。我個人主要使用的是它的英文處理模組Pattern.en, 有很多很不錯的文字處理功能,包括基礎的tokenize, 詞性標註,句子切分,語法檢查,拼寫糾錯,情感分析,句法分析等,相當不錯。

4.3 TextBlob: Simplified Text Processing

TextBlob是一個很有意思的Python文字處理工具包,它其實是基於上面兩個Python工具包NLKT和Pattern做了封裝(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),同時提供了很多文字處理功能的介面,包括詞性標註,名詞短語提取,情感分析,文字分類,拼寫檢查等,甚至包括翻譯和語言檢測,不過這個是基於Google的API的,有呼叫次數限制。TextBlob相對比較年輕,有興趣的同學可以關注。 

4.4 MBSP for Python

MBSP與Pattern同源,同出自比利時安特衛普大學CLiPS實驗室,提供了Word Tokenization, 句子切分,詞性標註,Chunking, Lemmatization,句法分析等基本的文字處理功能,感興趣的同學可以關注。

4.5 Gensim: Topic modeling for humans

Gensim是一個相當專業的主題模型Python工具包,無論是程式碼還是文件,我們曾經用《如何計算兩個文件的相似度》介紹過Gensim的安裝和使用過程,這裡就不多說了。 

4.6 langid.py: Stand-alone language identification system

語言檢測是一個很有意思的話題,不過相對比較成熟,這方面的解決方案很多,也有很多不錯的開源工具包,不過對於Python來說,我使用過langid這個工具包,也非常願意推薦它。langid目前支援97種語言的檢測,提供了很多易用的功能,包括可以啟動一個建議的server,通過json呼叫其API,可定製訓練自己的語言檢測模型等,可以說是“麻雀雖小,五臟俱全”。

4.7 Jieba

Jieba做最好的Python中文分片語件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.
好了,終於可以說一個國內的Python文字處理工具包了:結巴分詞,其功能包括支援三種分詞模式(精確模式、全模式、搜尋引擎模式),支援繁體分詞,支援自定義詞典等,是目前一個非常不錯的Python中文分詞解決方案。

相關推薦

python常用工具

一、Python中常用的科學計算工具包: 我們最瞭解的科學計算工具可能是Matlab,它能進行集數值計算,視覺化工具及交互於一身,可惜的是它是一個商業產品。開源方面除了GNU Octave在嘗試做一個類似Matlab的工具包外,Python的這幾個工具包集合到一起也可以替代

常用工具-哈工大語言技術平臺(LTP)-本地安裝-python介面(ubuntu,win7-64)

目錄 一、前言          本文件主要簡介哈工大一款語言技術平臺(LTP)的使用方法。          LTP提供的主要功能有:中文分詞,詞性標註,命名實體識別,依存句法分析,語義角色標註。          使用LTP的

python在計算機視覺常用

Python機器視覺程式設計常用資料結構與示例 本文總結了使用Python進行機器視覺(影象處理)程式設計時常用的資料結構,主要包括以下內容: 資料結構通用序列操作:索引(indexing)、分片(slicing)、加(adding)、乘(multipying)等列表:建

【Latex】常用工具

struct blog code ima input provides vid aspect 常用 字體篇: \usepackage{color} {\color{red}{Hello World!}}   表格篇: 1.resizebox

python的各個的安裝,用pip安裝whl文件

開始菜單 -s pla 英文 target com pac 版本 下載 在安裝之前,一直比較迷惑究竟如何用,安裝完後,發現竟然如此簡單 首先我一般用的是python27,官網下載python27msi安裝window7 64位後,已經自帶了Pip 和 easy_instal

python常用工具及設置

python pycharm 目的:記錄一下常用工具及設置,以便換電腦後可以找回工作環境。環境:windows 7 ubuntu 16.4情景:學習python時,一個好的開發環境可以提供很多幫助,節省時間,提高效率等,經常在windows和ubuntu系統中寫python,想要一個兼容平臺且好用免

Python的閉

兩個 類型 而在 參數 nbsp 方法 area python 屬於 什麽叫做閉包呢?   閉包就是有兩個函數,他們兩個屬於嵌套類型的,而在裏面執行的這個函數,需要借助於外面函數的參數,這種關系就叫做閉包,具體的去其他地方看吧 ,我是野路子的。 Python程序中是允許

java常用jar

中一 2.6 jdb jxl obj 串行化 分析 lean tag commons-io.jar:可以看成是java.io的擴展,用來幫助進行IO功能開發.它包含三個主要的領域:Utilityclasses-提供一些靜態方法來完成公共任務.Filters-提供文件過濾器的

Python常用的模塊(OS模塊)

幫助文檔 .get pytho python代碼 dir() port OS .html 技術分享 一、Python OS模塊介紹 OS模塊簡單的來說它是一個Python的系統編程的操作模塊,可以處理文件和目錄這些我們日常手動需要做的操作。 可以查看OS模塊的幫助文檔: &

Python常用的模塊(random模塊)

ndb targe href 函數 設定 shuf 浮點 lis mod 一、random模塊簡介 Python標準庫中的random函數,可以生成隨機浮點數、整數、字符串,甚至幫助你隨機選擇列表序列中的一個元素,打亂一組數據等。 二、random模塊重要函數 1 )、r

Python常用的模塊(sys模塊)

技術分享 案例演示 解釋 事先 目錄名 程序 jpg 分享圖片 int 一、導入sys模塊操作 首先,打開終端模擬器進入Python解釋器或者打開IDE編輯器創建一個新的.py後綴名的Python程序文件。 下面,以解釋器中的操作舉例: >>> impor

JAVA開發常用工具

為什麽 高效 應用 joda hone 嵌入 圖片 是你 util 一個有經驗的Java開發人員特征之一就是善於使用已有的輪子來造車。《Effective Java》的作者Joshua Bloch曾經說過:“建議使用現有的API來開發,而不是重復造輪子&rdqu

python常用的處理字符串的方法

sum cbac post OS 如果 ror 返回 cdb IT 1. find()   查看子序列的首個索引,沒有則返回-1    name = ‘aabcdbefg‘ c = name.find(‘b‘) print(c)    2 2.join()   

python常用模塊詳解二

digest cal alt a* bytes byte code 十六 負責 log模塊的講解 1 Python 使用logging模塊記錄日誌涉及四個主要類,使用官方文檔中的概括最為合適: 2 3 logger提供了應用程序可以直接使用的接口API;

python常用的文件和目錄操作(二)

工作目錄 environ win works ID ksh sys remove -s OS模塊 一. 概述 python os模塊提供了非常豐富的方法用來處理文件和目錄 二. 導入:import os 三. 常用方法 1. os.name 輸出字符串表示正在使用的平臺,如

Python的Numpy

對象 序列 tro ali wid PE www. linspace 掌握 通過本次學習你可以掌握Numpy Numpy介紹(獲取地址) numpy的主要對象是同質多維數組。也就是在一個元素(通常是數字)表中,元素的類型都是相同的。 numpy的數組類被成為ndarray。

Apache commons(Java常用工具)簡介

機制 encode 解析 help IT PE tom base cit Apache Commons是一個非常有用的工具包,解決各種實際的通用問題,下面是一個簡述表,詳細信息訪問http://jakarta.apache.org/commons/index.html Be

python常用的模塊

模塊 choice nbsp 字符串 range sam dom 順序 amp ramdom隨機模塊 用法: random.random() 返回[0,1)的隨機數 random.uniform(a, b) 返回[a, b]的隨機數,a和b可以無序 random.rand

Python常用的內值方法

style pri 最大值 div for 常用 值方法 str hello 1)min(2,4) ## 求最小值 2)max(2,4) ## 求最大值3)sum(range(1,100,2)) ## 求和4)枚舉:

python的閉和裝飾器

原函數 com 持久 sys 判斷 關於 success 常用 參數傳遞 閉包函數介紹 什麽是閉包 維基百科中關於閉包的概念: 在一些語言中,在函數中可以(嵌套)定義另一個函數時,如果內部的函數引用了外部的函數的變量,則可能產生閉包。閉包可以用來在一個函數與一組 “私有”