python機器學(xué)習(xí)庫常用匯總
匯總整理一套Python網(wǎng)頁爬蟲,文本處理,科學(xué)計算,機器學(xué)習(xí)和數(shù)據(jù)挖掘的兵器譜。
1. Python網(wǎng)頁爬蟲工具集
一個真實的項目,一定是從獲取數(shù)據(jù)開始的。無論文本處理,機器學(xué)習(xí)和數(shù)據(jù)挖掘,都需要數(shù)據(jù),除了通過一些渠道購買或者下載的專業(yè)數(shù)據(jù)外,常常需要大家自己動手爬數(shù)據(jù),這個時候,爬蟲就顯得格外重要了,幸好,Python提供了一批很不錯的網(wǎng)頁爬蟲工具框架,既能爬取數(shù)據(jù),也能獲取和清洗數(shù)據(jù),也就從這里開始了:
1.1 Scrapy
鼎鼎大名的Scrapy,相信不少同學(xué)都有耳聞,課程圖譜中的很多課程都是依靠Scrapy抓去的,這方面的介紹文章有很多,推薦大牛pluskid早年的一篇文章:《Scrapy 輕松定制網(wǎng)絡(luò)爬蟲》,歷久彌新。
官方主頁:http://scrapy.org/
Github代碼頁: https://github.com/scrapy/scrapy
1.2 Beautiful Soup
客觀的說,Beautifu Soup不完全是一套爬蟲工具,需要配合urllib使用,而是一套HTML / XML數(shù)據(jù)分析,清洗和獲取工具。
官方主頁:http://www.crummy.com/software/BeautifulSoup/
1.3 Python-Goose
Goose最早是用Java寫得,后來用Scala重寫,是一個Scala項目。Python-Goose用Python重寫,依賴了Beautiful Soup。前段時間用過,感覺很不錯,給定一個文章的URL, 獲取文章的標題和內(nèi)容很方便。
Github主頁:https://github.com/grangier/python-goose
2. Python文本處理工具集
從網(wǎng)頁上獲取文本數(shù)據(jù)之后,依據(jù)任務(wù)的不同,就需要進行基本的文本處理了,譬如對于英文來說,需要基本的tokenize,對于中文,則需要常見的中文分詞,進一步的話,無論英文中文,還可以詞性標注,句法分析,關(guān)鍵詞提取,文本分類,情感分析等等。這個方面,特別是面向英文領(lǐng)域,有很多優(yōu)秀的工具包,我們一一道來。
2.1 NLTK — Natural Language Toolkit
搞自然語言處理的同學(xué)應(yīng)該沒有人不知道NLTK吧,這里也就不多說了。不過推薦兩本書籍給剛剛接觸NLTK或者需要詳細了解NLTK的同學(xué): 一個是官方的《Natural Language Processing with Python》,以介紹NLTK里的功能用法為主,同時附帶一些Python知識,同時國內(nèi)陳濤同學(xué)友情翻譯了一個中文版,這里可以看到:推薦《用Python進行自然語言處理》中文翻譯-NLTK配套書;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,這本書要深入一些,會涉及到NLTK的代碼結(jié)構(gòu),同時會介紹如何定制自己的語料和模型等,相當不錯。
官方主頁:http://www.nltk.org/
Github代碼頁:https://github.com/nltk/nltk
2.2 Pattern
Pattern由比利時安特衛(wèi)普大學(xué)CLiPS實驗室出品,客觀的說,Pattern不僅僅是一套文本處理工具,它更是一套web數(shù)據(jù)挖掘工具,囊括了數(shù)據(jù)抓取模塊(包括Google, Twitter, 維基百科的API,以及爬蟲和HTML分析器),文本處理模塊(詞性標注,情感分析等),機器學(xué)習(xí)模塊(VSM, 聚類,SVM)以及可視化模塊等,可以說,Pattern的這一整套邏輯也是這篇文章的組織邏輯,不過這里我們暫且把Pattern放到文本處理部分。我個人主要使用的是它的英文處理模塊Pattern.en, 有很多很不錯的文本處理功能,包括基礎(chǔ)的tokenize, 詞性標注,句子切分,語法檢查,拼寫糾錯,情感分析,句法分析等,相當不錯。
官方主頁:http://www.clips.ua.ac.be/pattern
2.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的,有調(diào)用次數(shù)限制。TextBlob相對比較年輕,有興趣的同學(xué)可以關(guān)注。
官方主頁:http://textblob.readthedocs.org/en/dev/
Github代碼頁:https://github.com/sloria/textblob
2.4 MBSP for Python
MBSP與Pattern同源,同出自比利時安特衛(wèi)普大學(xué)CLiPS實驗室,提供了Word Tokenization, 句子切分,詞性標注,Chunking, Lemmatization,句法分析等基本的文本處理功能,感興趣的同學(xué)可以關(guān)注。
官方主頁:http://www.clips.ua.ac.be/pages/MBSP
2.5 Gensim: Topic modeling for humans
Gensim是一個相當專業(yè)的主題模型Python工具包,無論是代碼還是文檔,我們曾經(jīng)用《如何計算兩個文檔的相似度》介紹過Gensim的安裝和使用過程,這里就不多說了。
官方主頁:http://radimrehurek.com/gensim/index.html
github代碼頁:https://github.com/piskvorky/gensim
2.6 langid.py: Stand-alone language identification system
語言檢測是一個很有意思的話題,不過相對比較成熟,這方面的解決方案很多,也有很多不錯的開源工具包,不過對于Python來說,我使用過langid這個工具包,也非常愿意推薦它。langid目前支持97種語言的檢測,提供了很多易用的功能,包括可以啟動一個建議的server,通過json調(diào)用其API,可定制訓(xùn)練自己的語言檢測模型等,可以說是“麻雀雖小,五臟俱全”。
Github主頁:https://github.com/saffsd/langid.py
2.7 Jieba: 結(jié)巴中文分詞
“結(jié)巴”中文分詞:做最好的Python中文分詞組件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.
好了,終于可以說一個國內(nèi)的Python文本處理工具包了:結(jié)巴分詞,其功能包括支持三種分詞模式(精確模式、全模式、搜索引擎模式),支持繁體分詞,支持自定義詞典等,是目前一個非常不錯的Python中文分詞解決方案。
Github主頁:https://github.com/fxsjy/jieba
3. Python科學(xué)計算工具包
說起科學(xué)計算,大家首先想起的是Matlab,集數(shù)值計算,可視化工具及交互于一身,不過可惜是一個商業(yè)產(chǎn)品。開源方面除了GNU Octave在嘗試做一個類似Matlab的工具包外,Python的這幾個工具包集合到一起也可以替代Matlab的相應(yīng)功能:NumPy+SciPy+Matplotlib+iPython。同時,這幾個工具包,特別是NumPy和SciPy,也是很多Python文本處理 & 機器學(xué)習(xí) & 數(shù)據(jù)挖掘工具包的基礎(chǔ),非常重要。最后再推薦一個系列《用Python做科學(xué)計算》,將會涉及到NumPy, SciPy, Matplotlib,可以做參考。
3.1 NumPy
NumPy幾乎是一個無法回避的科學(xué)計算工具包,最常用的也許是它的N維數(shù)組對象,其他還包括一些成熟的函數(shù)庫,用于整合C/C++和Fortran代碼的工具包,線性代數(shù)、傅里葉變換和隨機數(shù)生成函數(shù)等。NumPy提供了兩種基本的對象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存儲單一數(shù)據(jù)類型的多維數(shù)組,而ufunc則是能夠?qū)?shù)組進行處理的函數(shù)。
3.2 SciPy:Scientific Computing Tools for Python
“SciPy是一個開源的Python算法庫和數(shù)學(xué)工具包,SciPy包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計算。其功能與軟件MATLAB、Scilab和GNU Octave類似。 Numpy和Scipy常常結(jié)合著使用,Python大多數(shù)機器學(xué)習(xí)庫都依賴于這兩個模塊。”—-引用自“Python機器學(xué)習(xí)庫”
3.3 Matplotlib
matplotlib 是python最著名的繪圖庫,它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應(yīng)用程序中。Matplotlib可以配合ipython shell使用,提供不亞于Matlab的繪圖體驗,總之用過了都說好。
4. Python 機器學(xué)習(xí) & 數(shù)據(jù)挖掘 工具包
機器學(xué)習(xí)和數(shù)據(jù)挖掘這兩個概念不太好區(qū)分,這里就放到一起了。這方面的開源Python工具包有很多,這里先從熟悉的講起,再補充其他來源的資料,也歡迎大家補充。
4.1 scikit-learn: Machine Learning in Python
首先推薦大名鼎鼎的scikit-learn,scikit-learn是一個基于NumPy, SciPy, Matplotlib的開源機器學(xué)習(xí)工具包,主要涵蓋分類,回歸和聚類算法,例如SVM, 邏輯回歸,樸素貝葉斯,隨機森林,k-means等算法,代碼和文檔都非常不錯,在許多Python項目中都有應(yīng)用。例如在我們熟悉的NLTK中,分類器方面就有專門針對scikit-learn的接口,可以調(diào)用scikit-learn的分類算法以及訓(xùn)練數(shù)據(jù)來訓(xùn)練分類器模型。
4.2 Pandas: Python Data Analysis Library
Pandas也是基于NumPy和Matplotlib開發(fā)的,主要用于數(shù)據(jù)分析和數(shù)據(jù)可視化,它的數(shù)據(jù)結(jié)構(gòu)DataFrame和R語言里的data.frame很像,特別是對于時間序列數(shù)據(jù)有自己的一套分析機制,非常不錯。這里推薦一本書《Python for Data Analysis》,作者是Pandas的主力開發(fā),依次介紹了iPython, NumPy, Pandas里的相關(guān)功能,數(shù)據(jù)可視化,數(shù)據(jù)清洗和加工,時間數(shù)據(jù)處理等,案例包括金融股票數(shù)據(jù)挖掘等,相當不錯。
官方主頁:http://pandas.pydata.org/
4.3 mlpy – Machine Learning Python
官方主頁:http://mlpy.sourceforge.net/
4.4 PyBrain
“PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network)是Python的一個機器學(xué)習(xí)模塊,它的目標是為機器學(xué)習(xí)任務(wù)提供靈活、易應(yīng)、強大的機器學(xué)習(xí)算法。(這名字很霸氣)
PyBrain正如其名,包括神經(jīng)網(wǎng)絡(luò)、強化學(xué)習(xí)(及二者結(jié)合)、無監(jiān)督學(xué)習(xí)、進化算法。因為目前的許多問題需要處理連續(xù)態(tài)和行為空間,必須使用函數(shù)逼近(如神經(jīng)網(wǎng)絡(luò))以應(yīng)對高維數(shù)據(jù)。PyBrain以神經(jīng)網(wǎng)絡(luò)為核心,所有的訓(xùn)練方法都以神經(jīng)網(wǎng)絡(luò)為一個實例?!?/p>
4.5 Theano
“Theano 是一個 Python 庫,用來定義、優(yōu)化和模擬數(shù)學(xué)表達式計算,用于高效的解決多維數(shù)組的計算問題。Theano的特點:緊密集成Numpy;高效的數(shù)據(jù)密集型GPU計算;高效的符號微分運算;高速和穩(wěn)定的優(yōu)化;動態(tài)生成c代碼;廣泛的單元測試和自我驗證。自2007年以來,Theano已被廣泛應(yīng)用于科學(xué)運算。theano使得構(gòu)建深度學(xué)習(xí)模型更加容易,可以快速實現(xiàn)多種模型。PS:Theano,一位希臘美女,Croton最有權(quán)勢的Milo的女兒,后來成為了畢達哥拉斯的老婆?!?/p>
4.6 Pylearn2
“Pylearn2建立在theano上,部分依賴scikit-learn上,目前Pylearn2正處于開發(fā)中,將可以處理向量、圖像、視頻等數(shù)據(jù),提供MLP、RBM、SDA等深度學(xué)習(xí)模型?!?/p>
官方主頁:http://deeplearning.net/software/pylearn2/
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python利用sklearn包編寫決策樹源代碼
- Python scikit-learn 做線性回歸的示例代碼
- 基于Python和Scikit-Learn的機器學(xué)習(xí)探索
- Python機器學(xué)習(xí)庫scikit-learn安裝與基本使用教程
- Python 機器學(xué)習(xí)庫 NumPy入門教程
- 機器學(xué)習(xí)之KNN算法原理及Python實現(xiàn)方法詳解
- Python機器學(xué)習(xí)k-近鄰算法(K Nearest Neighbor)實例詳解
- 用Python從零實現(xiàn)貝葉斯分類器的機器學(xué)習(xí)的教程
- 機器學(xué)習(xí)python實戰(zhàn)之手寫數(shù)字識別
- 機器學(xué)習(xí)python實戰(zhàn)之決策樹
- Python基于sklearn庫的分類算法簡單應(yīng)用示例
相關(guān)文章
Python可執(zhí)行文件反編譯教程(exe轉(zhuǎn)py)
python的便利性,使得如今許多軟件開發(fā)者、黑客都開始使用python打包成exe的方式進行程序的發(fā)布,那么Python如何反編譯可執(zhí)行文件,本文就來介紹一下,感興趣的可以了解一下2021-12-12python爬蟲爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù)
這篇文章主要介紹了python爬蟲如何爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù),幫助大家更好的利用爬蟲分析網(wǎng)頁,感興趣的朋友可以了解下2020-09-09python讀取圖片的方式,以及將圖片以三維數(shù)組的形式輸出方法
今天小編就為大家分享一篇python讀取圖片的方式,以及將圖片以三維數(shù)組的形式輸出方法,具有好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07解決Python設(shè)置函數(shù)調(diào)用超時,進程卡住的問題
今天小編就為大家分享一篇解決Python設(shè)置函數(shù)調(diào)用超時,進程卡住的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08利用Python+阿里云實現(xiàn)DDNS動態(tài)域名解析的方法
這篇文章主要介紹了利用Python+阿里云實現(xiàn)DDNS動態(tài)域名解析的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04Python自然語言處理 NLTK 庫用法入門教程【經(jīng)典】
這篇文章主要介紹了Python自然語言處理 NLTK 庫用法,結(jié)合實例形式詳細分析了NLTK庫的功能、安裝、引用以及使用NLTK庫進行文本分析的各種常用操作技巧,需要的朋友可以參考下2018-06-06