Python机器学习与数据处理核心库全景指南
本文系统梳理了Python在数据获取、处理、计算及挖掘领域的核心工具。涵盖Scrapy、Beautiful Soup等爬虫框架,NLTK、Jieba等NLP库,NumPy、SciPy等科学计算基础,以及scikit-learn、Theano等机器学习与深度学习框架,为开发者提供一站式选型参考。
本文整理了一套涵盖Python网页爬虫、文本处理、科学计算、机器学习及数据挖掘领域的常用工具清单。
1. Python网页爬虫工具集
任何实际项目通常始于数据获取。无论是文本处理、机器学习还是数据挖掘,数据都是基础。除购买或下载专业数据集外,开发者常需自行爬取数据,此时爬虫工具至关重要。Python提供了多款优秀的网页爬虫框架,既能抓取数据,也能协助获取和清洗数据,以下从爬虫部分开始介绍:
1.1 Scrapy
Scrapy是业界知名的爬虫框架,许多课程图谱中的数据均依赖其抓取。相关介绍文章众多,推荐pluskid早年撰写的《Scrapy 轻松定制网络爬虫》,该文章至今仍具参考价值。
官方主页:http://scrapy.org/ Github代码页: https://github.com/scrapy/scrapy
1.2 Beautiful Soup
客观而言,Beautiful Soup并非独立的爬虫工具,需配合urllib使用,它主要是一套用于HTML/XML数据分析、清洗和数据提取的工具。
官方主页:http://www.crummy.com/software/BeautifulSoup/
1.3 Python-Goose
Goose最初由Java编写,后改用Scala重写,是一个Scala项目。Python-Goose则是用Python重写的版本,依赖Beautiful Soup。笔者曾使用过该工具,体验良好:只需提供文章URL,即可便捷地获取文章标题和内容。
Github主页:https://github.com/grangier/python-goose
2. Python文本处理工具集
从网页获取文本数据后,根据任务需求需进行基础文本处理。例如英文需进行基本的tokenize(分词),中文则需进行常见的中文分词。进一步处理可包括词性标注、句法分析、关键词提取、文本分类及情感分析等。尤其在英文领域,存在许多优秀的工具包,下文将逐一介绍。
2.1 NLTK — Natural Language Toolkit
从事自然语言处理的研究者无人不知NLTK,此处不再赘述。推荐两本适合初学者或需深入了解NLTK的书籍:一是官方出版的《Natural Language Processing with Python》,主要介绍NLTK的功能用法,并附带Python知识;国内陈涛同学已友情翻译为中文版,可参考:推荐《用Python进行自然语言处理》中文翻译-NLTK配套书;另一本是《Python Text Processing with NLTK 2.0 Cookbook》,内容更为深入,涉及NLTK代码结构及如何定制语料和模型等,质量很高。
官方主页:http://www.nltk.org/ Github代码页:https://github.com/nltk/nltk
2.2 Pattern
Pattern由比利时安特卫普大学CLiPS实验室开发。客观而言,Pattern不仅是一套文本处理工具,更是一套Web数据挖掘工具,包含数据抓取模块(集成Google、Twitter、维基百科API,以及爬虫和HTML分析器)、文本处理模块(词性标注、情感分析等)、机器学习模块(VSM、聚类、SVM)及可视化模块等。可以说,Pattern的整体逻辑也是本文的组织逻辑,但此处暂将其归入文本处理部分。笔者主要使用其英文处理模块Pattern.en,该模块提供了诸多优秀的文本处理功能,包括基础tokenize、词性标注、句子切分、语法检查、拼写纠错、情感分析及句法分析等,表现优异。
官方主页:http://www.clips.ua.ac.be/pattern
2.3 TextBlob: Simplified Text Processing
TextBlob是一款有趣的Python文本处理工具包,它基于前述的NLTK和Pattern进行封装(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),并提供了多种文本处理功能的接口,包括词性标注、名词短语提取、情感分析、文本分类、拼写检查等,甚至包括翻译和语言检测(后者基于Google API,存在调用次数限制)。TextBlob相对年轻,有兴趣的开发者可关注。
官方主页:http://textblob.readthedocs.org/en/dev/ Github代码页:https://github.com/sloria/textblob
2.4 MBSP for Python
MBSP与Pattern同源,均出自比利时安特卫普大学CLiPS实验室,提供了Word Tokenization、句子切分、词性标注、Chunking、Lemmatization及句法分析等基础文本处理功能,感兴趣的同学可关注。
官方主页:http://www.clips.ua.ac.be/pages/MBSP
2.5 Gensim: Topic modeling for humans
Gensim是一款相当专业的主题模型Python工具包,其代码和文档质量均很高。我们曾在《如何计算两个文档的相似度》一文中介绍过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调用其API、可定制训练自己的语言检测模型等,可谓“麻雀虽小,五脏俱全”。
Github主页:https://github.com/saffsd/langid.py
2.7 Jieba: 结巴中文分词
“结巴”中文分词:做最好的Python中文分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module. 终于介绍一个国内的Python文本处理工具包:结巴分词。其功能包括支持三种分词模式(精确模式、全模式、搜索引擎模式)、支持繁体分词、支持自定义词典等,是目前非常优秀的Python中文分词解决方案。
Github主页:https://github.com/fxsjy/jieba
3. Python科学计算工具包
提及科学计算,人们首先想到的是Matlab,它集数值计算、可视化工具及交互于一体,但属于商业产品。开源方面,除GNU Octave尝试开发类似Matlab的工具包外,Python的NumPy、SciPy、Matplotlib及iPython组合在一起,也可替代Matlab的相应功能。同时,这些工具包,特别是NumPy和SciPy,也是许多Python文本处理、机器学习及数据挖掘工具包的基础,至关重要。最后推荐系列《用Python做科学计算》,涉及NumPy、SciPy、Matplotlib,可作为参考。
3.1 NumPy
NumPy几乎是科学计算中无法回避的工具包。最常用的或许是它的N维数组对象,其他还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包,以及线性代数、傅里叶变换和随机数生成函数等。NumPy提供了两种基本对象:ndarray(N-dimensional array object)和ufunc(universal function object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
官方主页:http://www.numpy.org/
3.2 SciPy:Scientific Computing Tools for Python
“SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。其功能与软件MATLAB、Scilab和GNU Octave类似。 Numpy和Scipy常常结合着使用,Python大多数机器学习库都依赖于这两个模块。”—-引用自“Python机器学习库”
官方主页:http://www.scipy.org/
3.3 Matplotlib
matplotlib是Python最著名的绘图库,提供了一整套与matlab相似的命令API,非常适合交互式制图。此外,它也可方便地作为绘图控件嵌入GUI应用程序中。Matplotlib可配合ipython shell使用,提供不亚于Matlab的绘图体验,总之用过的人都说好。
官方主页:http://matplotlib.org/
4. Python 机器学习 & 数据挖掘 工具包
机器学习和数据挖掘这两个概念不易区分,此处将其合并介绍。该领域的开源Python工具包众多,这里先从熟悉的讲起,再补充其他来源的资料,也欢迎大家补充。
4.1 scikit-learn: Machine Learning in Python
首先推荐大名鼎鼎的scikit-learn。scikit-learn是一个基于NumPy、SciPy、Matplotlib的开源机器学习工具包,主要涵盖分类、回归和聚类算法,例如SVM、逻辑回归、朴素贝叶斯、随机森林、k-means等算法。其代码和文档质量均很高,在许多Python项目中都有应用。例如在熟悉的NLTK中,分类器方面就有专门针对scikit-learn的接口,可调用scikit-learn的分类算法及训练数据来训练分类器模型。
官方主页:http://scikit-learn.org/
4.2 Pandas: Python Data Analysis Library
Pandas也是基于NumPy和Matplotlib开发的,主要用于数据分析和数据可视化。其数据结构DataFrame与R语言里的data.frame相似,特别是对于时间序列数据有自己的一套分析机制,表现优异。这里推荐一本书《Python for Data Analysis》,作者是Pandas的主力开发者,依次介绍了iPython、NumPy、Pandas中的相关功能、数据可视化、数据清洗和加工、时间数据处理等,案例包括金融股票数据挖掘等,质量很高。
官方主页: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的一个机器学习模块,它的目标是为机器学习任务提供灵活、易应、强大的机器学习算法。(这名字很霸气)
PyBrain正如其名,包括神经网络、强化学习(及二者结合)、无监督学习、进化算法。因为目前的许多问题需要处理连续态和行为空间,必须使用函数逼近(如神经网络)以应对高维数据。PyBrain以神经网络为核心,所有的训练方法都以神经网络为一个实例。”
4.5 Theano
“Theano 是一个 Python 库,用来定义、优化和模拟数学表达式计算,用于高效的解决多维数组的计算问题。Theano的特点:紧密集成Numpy;高效的数据密集型GPU计算;高效的符号微分运算;高速和稳定的优化;动态生成c代码;广泛的单元测试和自我验证。自2007年以来,Theano已被广泛应用于科学运算。theano使得构建深度学习模型更加容易,可以快速实现多种模型。PS:Theano,一位希腊美女,Croton最有权势的Milo的女儿,后来成为了毕达哥拉斯的老婆。”
4.6 Pylearn2
“Pylearn2建立在theano上,部分依赖scikit-learn上,目前Pylearn2正处于开发中,将可以处理向量、图像、视频等数据,提供MLP、RBM、SDA等深度学习模型。”
官方主页:http://deeplearning.net/software/pylearn2/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













