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