【Python环境】Python数据挖掘兵器谱

Python正渐渐成为很多人工作中的第一辅助脚本语言,在文本处理,科学计算,机器学习和数据挖掘领域,有很多很多优秀的Python工具包可供使用,所以作为Pythoner,也是相当幸福的。今天在这里汇总整理一套Python关于网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。

一、Python网页爬虫工具集

一个真实的项目,一定是从获取数据开始的。无论文本处理,机器学习和数据挖掘,都需要数据,除了通过一些渠道购买或者下载的专业数据外,常常需要大家自己动手爬数据,这个时候,爬虫就显得格外重要了,幸好,Python提供了一批很不错的网页爬虫工具框架,既能爬取数据,也能获取和清洗数据,我们也就从这里开始了:

1. Scrapy

Scrapy, a fast high-levelscreen scraping and web crawling framework forPython.

鼎鼎大名的Scrapy,相信不少同学都有耳闻,课程图谱中的很多课程都是依靠Scrapy抓去的,这方面的介绍文章有很多,推荐大牛pluskid早年的一篇文章:《Scrapy 轻松定制网络爬虫》,历久弥新。

官方主页:http://scrapy.org/ Github代码页: https://github.com/scrapy/scrapy

2. Beautiful Soup

You didn't write that awfulpage. You're just trying to get some data outof it. Beautiful Soup is here tohelp. Since 2004, it's been saving programmershours or days of work onquick-turnaround screen scraping projects.

读书的时候通过《集体智慧编程》这本书知道BeautifulSoup的,后来也偶尔会用用,非常棒的一套工具。客观的说,Beautifu Soup不完全是一套爬虫工具,需要配合urllib使用,而是一套HTML/XML数据分析,清洗和获取工具。

官方主页:http://www.crummy.com/software/BeautifulSoup/

3. Python-Goose

Html Content / ArticleExtractor, web scrapping lib in Python

Goose最早是用Java写得,后来用Scala重写,是一个Scala项目。Python-Goose用Python重写,依赖了Beautiful Soup。前段时间用过,感觉很不错,给定一个文章的URL, 获取文章的标题和内容很方便。

Github主页:https://github.com/grangier/python-goose

二、Python文本处理工具集

从网页上获取文本数据之后,依据任务的不同,就需要进行基本的文本处理了,譬如对于英文来说,需要基本的tokenize,对于中文,则需要常见的中文分词,进一步的话,无论英文中文,还可以词性标注,句法分析,关键词提取,文本分类,情感分析等等。这个方面,特别是面向英文领域,有很多优秀的工具包,我们一一道来。

1. NLTK -- Natural LanguageToolkit

NLTK is a leading platformfor building Python programs to work with humanlanguage data. It provideseasy-to-use interfaces to over 50 corpora andlexical resources such as WordNet,along with a suite of text processinglibraries for classification, tokenization,stemming, tagging, parsing, andsemantic reasoning, and an active discussionforum.

搞自然语言处理的同学应该没有人不知道NLTK吧,这里也就不多说了。不过推荐两本书籍给刚刚接触NLTK或者需要详细了解NLTK的同学: 一个是官方的《Natural Language Processing with Python》,以介绍NLTK里的功能用法为主,同时附带一些Python知识,同时国内陈涛同学友情翻译了一个中文版,这里可以看到:推荐《用Python进行自然语言处理》中文翻译-NLTK配套书;另外一本是《Python Text Processing withNLTK 2.0 Cookbook》,这本书要深入一些,会涉及到NLTK的代码结构,同时会介绍如何定制自己的语料和模型等,相当不错。

官方主页:http://www.nltk.org/ Github代码页:https://github.com/nltk/nltk

2. Pattern

Pattern is a web miningmodule for the Python programming language.It hastools for data mining (Google,Twitter and Wikipedia API, a web crawler, a HTMLDOM parser), natural languageprocessing (part-of-speech taggers, n-gramsearch, sentiment analysis, WordNet),machine learning (vector space model,clustering, SVM), network analysis andcanvas visualization.

Pattern由比利时安特卫普大学CLiPS实验室出品,客观的说,Pattern不仅仅是一套文本处理工具,它更是一套web数据挖掘工具,囊括了数据抓取模块(包括Google, Twitter, 维基百科的API,以及爬虫和HTML分析器),文本处理模块(词性标注,情感分析等),机器学习模块(VSM, 聚类,SVM)以及可视化模块等,可以说,Pattern的这一整套逻辑也是这篇文章的组织逻辑,不过这里我们暂且把Pattern放到文本处理部分。我个人主要使用的是它的英文处理模块Pattern.en, 有很多很不错的文本处理功能,包括基础的tokenize, 词性标注,句子切分,语法检查,拼写纠错,情感分析,句法分析等,相当不错。

官方主页:http://www.clips.ua.ac.be/pattern

3. TextBlob: SimplifiedText Processing

TextBlob is a Python (2 and3) library for processing textual data. Itprovides a simple API for diving intocommon natural language processing (NLP)tasks such as part-of-speech tagging,noun phrase extraction, sentimentanalysis, classification, translation, andmore.

TextBlob是一个很有意思的Python文本处理工具包,它其实是基于上面两个Python工具包NLKT和Pattern做了封装(TextBlobstands on the giant shoulders of NLTK andpattern, and plays nicely with both),同时提供了很多文本处理功能的接口,包括词性标注,名词短语提取,情感分析,文本分类,拼写检查等,甚至包括翻译和语言检测,不过这个是基于Google的API的,有调用次数限制。TextBlob相对比较年轻,有兴趣的同学可以关注。

官方主页:http://textblob.readthedocs.org/en/dev/ Github代码页:https://github.com/sloria/textblob

4. MBSP for Python

MBSP is a text analysissystem based on the TiMBL and MBT memory basedlearning applications developedat CLiPS and ILK. It provides tools forTokenization and Sentence Splitting,Part of Speech Tagging, Chunking,Lemmatization, Relation Finding and PrepositionalPhrase Attachment.

MBSP与Pattern同源,同出自比利时安特卫普大学CLiPS实验室,提供了Word Tokenization, 句子切分,词性标注,Chunking,Lemmatization,句法分析等基本的文本处理功能,感兴趣的同学可以关注。

官方主页:http://www.clips.ua.ac.be/pages/MBSP

5. Gensim:

Topic modeling for humans

Gensim是一个相当专业的主题模型Python工具包,无论是代码还是文档,我们曾经用《如何计算两个文档的相似度》介绍过Gensim的安装和使用过程,这里就不多说了。

官方主页:http://radimrehurek.com/gensim/index.html github代码页:https://github.com/piskvorky/gensim

6. langid.py:

Stand-alone languageidentification system

语言检测是一个很有意思的话题,不过相对比较成熟,这方面的解决方案很多,也有很多不错的开源工具包,不过对于Python来说,我使用过langid这个工具包,也非常愿意推荐它。langid目前支持97种语言的检测,提供了很多易用的功能,包括可以启动一个建议的server,通过json调用其API,可定制训练自己的语言检测模型等,可以说是“麻雀虽小,五脏俱全”。

Github主页:https://github.com/saffsd/langid.py

7. Jieba: 结巴中文分词

"结巴"中文分词:做最好的Python中文分词组件 "Jieba" (Chinese for "to stutter") Chinesetextsegmentation: built to be the best Python Chinese word segmentation module.

好了,终于可以说一个国内的Python文本处理工具包了:结巴分词,其功能包括支持三种分词模式(精确模式、全模式、搜索引擎模式),支持繁体分词,支持自定义词典等,是目前一个非常不错的Python中文分词解决方案。

Github主页:https://github.com/fxsjy/jieba

8. xTAS

xTAS, the eXtensible TextAnalysis Suite, a distributed text analysispackage based on Celery andElasticsearch.

感谢微博朋友 @大山坡的春提供的线索:我们组同事之前发布了xTAS,也是基于python的textmining工具包,欢迎使用,链接:http://t.cn/RPbEZOW。看起来很不错的样子,回头试用一下。

Github代码页:https://github.com/NLeSC/xtas

三、Python科学计算工具包

说起科学计算,大家首先想起的是Matlab,集数值计算,可视化工具及交互于一身,不过可惜是一个商业产品。开源方面除了GNU Octave在尝试做一个类似Matlab的工具包外,Python的这几个工具包集合到一起也可以替代Matlab的相应功能:NumPy+SciPy+Matplotlib+iPython。同时,这几个工具包,特别是NumPy和SciPy,也是很多Python文本处理 & 机器学习 & 数据挖掘工具包的基础,非常重要。最后再推荐一个系列《用Python做科学计算》,将会涉及到NumPy, SciPy, Matplotlib,可以做参考。

1. NumPy

NumPy is the fundamentalpackage for scientific computing with Python. Itcontains among other things:

1)a powerful N-dimensional arrayobject

2)sophisticated (broadcasting)functions

3)tools for integrating C/C++and Fortran code

4)useful linear algebra, Fouriertransform, and randomnumber capabilities

Besides its obviousscientific uses, NumPy can also be used as anefficient multi-dimensional containerof generic data. Arbitrary data-types canbe defined. This allows NumPy toseamlessly and speedily integrate with a widevariety of databases.

NumPy几乎是一个无法回避的科学计算工具包,最常用的也许是它的N维数组对象,其他还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包,线性代数、傅里叶变换和随机数生成函数等。NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

官方主页:http://www.numpy.org/

2. SciPy:Scientific Computing Tools for Python

SciPy refers to severalrelated but distinct entities:

1)The SciPy Stack, a collection of open source software for scientificcomputingin Python, and particularly a specified set of core packages. 2)The community of people whouse and develop thisstack. 3)Several conferences dedicatedto scientific computingin Python - SciPy, EuroSciPy and SciPy.in. 4)The SciPy library, onecomponent of the SciPy stack,providing many numerical routines.

“SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。其功能与软件MATLAB、Scilab和GNUOctave类似。 Numpy和Scipy常常结合着使用,Python大多数机器学习库都依赖于这两个模块。”----引用自“Python机器学习库”

官方主页:http://www.scipy.org/

3. Matplotlib

Matplotlib is a python 2Dplotting library which produces publicationquality figures in a variety ofhardcopy formats and interactive environmentsacross platforms. matplotlib canbe used in python scripts, the python andipython shell (ala MATLAB®* or Mathematica®†),web application servers, and sixgraphical user interface toolkits.

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。Matplotlib可以配合ipython shell使用,提供不亚于Matlab的绘图体验,总之用过了都说好。

官方主页:http://matplotlib.org/

4. iPython

IPython provides a richarchitecture for interactive computing with:

1)Powerful interactive shells (terminal and Qt-based). 2)A browser-based notebook withsupport for code, text,mathematical expressions, inline plots and other richmedia. 3)Support for interactive datavisualization and use ofGUI toolkits. 4)Flexible, embeddableinterpreters to load into yourown projects. 5)Easy to use, high performancetools for parallelcomputing.

“iPython 是一个Python 的交互式Shell,比默认的Python Shell 好用得多,功能也更强大。她支持语法高亮、自动完成、代码调试、对象自省,支持 Bash Shell 命令,内置了许多很有用的功能和函式等,非常容易使用。 ” 启动iPython的时候用这个命令“ipython --pylab”,默认开启了matploblib的绘图交互,用起来很方便。

官方主页:http://ipython.org/

四、Python 机器学习 & 数据挖掘工具包

机器学习和数据挖掘这两个概念不太好区分,这里就放到一起了。这方面的开源Python工具包有很多,这里先从熟悉的讲起,再补充其他来源的资料,也欢迎大家补充。

1. scikit-learn: MachineLearning in Python

scikit-learn (formerlyscikits.learn) is an open source machine learninglibrary for the Pythonprogramming language. It features variousclassification, regression andclustering algorithms including support vectormachines, logistic regression,naive Bayes, random forests, gradient boosting,k-means and DBSCAN, and isdesigned to interoperate with the Python numericaland scientific librariesNumPy and SciPy.

首先推荐大名鼎鼎的scikit-learn,scikit-learn是一个基于NumPy, SciPy, Matplotlib的开源机器学习工具包,主要涵盖分类,回归和聚类算法,例如SVM,逻辑回归,朴素贝叶斯,随机森林,k-means等算法,代码和文档都非常不错,在许多Python项目中都有应用。例如在我们熟悉的NLTK中,分类器方面就有专门针对scikit-learn的接口,可以调用scikit-learn的分类算法以及训练数据来训练分类器模型。这里推荐一个视频,也是我早期遇到scikit-learn的时候推荐过的:推荐一个Python机器学习工具包Scikit-learn以及相关视频--Tutorial: scikit-learn -Machine Learning in Python

官方主页:http://scikit-learn.org/

2. Pandas: Python DataAnalysis Library

Pandas is a softwarelibrary written for the Python programming languagefor data manipulation andanalysis. In particular, it offers data structuresand operations formanipulating numerical tables and time series.

第一次接触Pandas是由于Udacity上的一门数据分析课程“Introductionto DataScience” 的Project需要用Pandas库,所以学习了一下Pandas。Pandas也是基于NumPy和Matplotlib开发的,主要用于数据分析和数据可视化,它的数据结构DataFrame和R语言里的data.frame很像,特别是对于时间序列数据有自己的一套分析机制,非常不错。这里推荐一本书《Python for Data Analysis》,作者是Pandas的主力开发,依次介绍了iPython, NumPy, Pandas里的相关功能,数据可视化,数据清洗和加工,时间数据处理等,案例包括金融股票数据挖掘等,相当不错。

官方主页:http://pandas.pydata.org/


原文发布于微信公众号 - 数据科学与人工智能(DS_AI_shujuren)

原文发表时间:2015-10-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

如何从新闻中识别骗子们的小套路

电信诈骗猖獗盛行,成为国家的重点打击对象,但是我们身边亲朋好友被骗的悲剧还在屡屡发生。小作者思考也许我们可以从新闻中提取电信诈骗的特征信息,为家里的长辈亲人提个...

18210
来自专栏数据结构与算法

1018. 打电话

1018. 打电话 (Standard IO) 时间限制: 1000 ms  空间限制: 262144 KB  具体限制  题目描述 某市的IC卡电话计费标准...

3739
来自专栏恰童鞋骚年

自己动手写游戏:Flappy Bird

START:最近闲来无事,看了看一下《C#开发Flappy Bird游戏》的教程,自己也试着做了一下,实现了一个超级简单版(十分简陋)的Flappy Bird...

1292
来自专栏CDA数据分析师

数据整理中经典的分类汇总问题的Python实现

? 数据分析职场新人,精通一门语言至关重要。写个web服务,可以用python、 写个服务器脚本,可以用python、 数据清洗和网络爬虫,可以用python...

24610
来自专栏我是攻城师

Lucene暴走之巧用内存倒排索引高效识别垃圾数据

29910
来自专栏服务端技术杂谈

谁毒死了酋长

出题 很久以前有一个大草原上最强的部落,其他部落的首领每年在酋长生日的一天会向他进贡。有一天进贡来了100人,每人送来了一个食物,酋长吃了其中一个食物后,口吐白...

2877
来自专栏大数据杂谈

Python爬虫:爬取拉勾网职位并分析

本文从拉勾网爬取深圳市数据分析的职位信息,并以CSV格式保存至电脑,之后进行数据清洗,生成词云,进行描述统计和回归分析,最终得出结论。

2812
来自专栏简书专栏

基于pandas、matplotlib、pyecharts的人工智能相关职位招聘市场数据分析

容大教育人工智能班数据分析阶段实战项目:人工智能相关职位数据分析 小组成员:雷坤、韦民童、李波、陶宇 项目周期5天,数据分析为第2天的需求。

2083
来自专栏懒人开发

(8.4)James Stewart Calculus 5th Edition:Applications to Economics and Biology In this

这里p是price价格, x是卖的个数 而这里 P = p(X)是当前的价格 如果我们把曲线分成n份,则有

1272
来自专栏有趣的Python和你

调用高德POI数据,带你玩转长沙

说到长沙,大家第一想到的可能就是小吃,当然来长沙旅游,不光只是为了吃,这吃喝玩乐,咱都得来一套是吧。基于此,我调用了高德的API,来获取POI数据,带你玩转长沙...

1504

扫码关注云+社区

领取腾讯云代金券