2023年6月30日发(作者:)
python中常⽤的⼯具包⼀、Python中常⽤的科学计算⼯具包:我们最了解的科学计算⼯具可能是Matlab,它能进⾏集数值计算,可视化⼯具及交互于⼀⾝,可惜的是它是⼀个商业产品。开源⽅⾯除了GNU Octave在尝试做⼀个类似Matlab的⼯具包外,Python的这⼏个⼯具包集合到⼀起也可以替代Matlab的相应功能:NumPy+SciPy+Matplotlib+iPython。同时,这⼏个⼯具包,特别是NumPy和SciPy,也是很多Python⽂本处理 & 机器学习 & 数据挖掘⼯具包的基础,⾮常重要。1. N: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机器学习库”tlibMatplotlib是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 LibraryPandas是⼀个强⼤的时间序列数据处理⼯具包,Pandas是基于Numpy构建的,⽐Numpy的使⽤更简单。最初开发的⽬的是为了分析财经数据,现在已经⼴泛应⽤在Python数据分析领域中。Pandas,最基础的数据结构是Series,⽤它来表达⼀⾏数据,可以理解为⼀维的数组。另⼀个关键的数据结构为DataFrame,它表⽰的是⼆维数组Pandas是基于NumPy和Matplotlib开发的,主要⽤于数据分析和数据可视化,它的数据结构DataFrame和R语⾔⾥的很像,特别是对于时间序列数据有⾃⼰的⼀套分析机制。有⼀本书《Python for Data Analysis》,作者是Pandas的主⼒开发,依次介绍了iPython, NumPy, Pandas⾥的相关功能,数据可视化,数据清洗和加⼯,时间数据处理等,案例包括⾦融股票数据挖掘等,相当不错。2.3 mlpy – Machine Learning PythonMlpy是基于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的⼥⼉,后来成为了毕达哥拉斯的⽼婆。”2.6 NLTKNLTK(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-GooseGoose最早是⽤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配套书;另外⼀本是《PythonText Processing with NLTK 2.0 Cookbook》,这本书要深⼊⼀些,会涉及到NLTK的代码结构,同时会介绍如何定制⾃⼰的语料和模型等,相当不错。4.2 PatternPattern由⽐利时安特卫普⼤学CLiPS实验室出品,客观的说,Pattern不仅仅是⼀套⽂本处理⼯具,它更是⼀套web数据挖掘⼯具,囊括了数据抓取模块(包括Google, Twitter, 维基百科的API,以及爬⾍和HTML分析器),⽂本处理模块(词性标注,情感分析等),机器学习模块(VSM, 聚类,SVM)以及可视化模块等,可以说,Pattern的这⼀整套逻辑也是这篇⽂章的组织逻辑,不过这⾥我们暂且把Pattern放到⽂本处理部分。我个⼈主要使⽤的是它的英⽂处理模块, 有很多很不错的⽂本处理功能,包括基础的tokenize, 词性标注,句⼦切分,语法检查,拼写纠错,情感分析,句法分析等,相当不错。4.3 TextBlob: Simplified Text ProcessingTextBlob是⼀个很有意思的Python⽂本处理⼯具包,它其实是基于上⾯两个Python⼯具包NLKT和Pattern做了封装(TextBlob standson the giant shoulders of NLTK and pattern, and plays nicely with both),同时提供了很多⽂本处理功能的接⼝,包括词性标注,名词短语提取,情感分析,⽂本分类,拼写检查等,甚⾄包括翻译和语⾔检测,不过这个是基于Google的API的,有调⽤次数限制。TextBlob相对⽐较年轻,有兴趣的同学可以关注。
4.4 MBSP for PythonMBSP与Pattern同源,同出⾃⽐利时安特卫普⼤学CLiPS实验室,提供了Word Tokenization, 句⼦切分,词性标注,Chunking,Lemmatization,句法分析等基本的⽂本处理功能,感兴趣的同学可以关注。4.5 Gensim: Topic modeling for humansGensim是⼀个相当专业的主题模型Python⼯具包,⽆论是代码还是⽂档,我们曾经⽤《如何计算两个⽂档的相似度》介绍过Gensim的安装和使⽤过程,这⾥就不多说了。
4.6 : Stand-alone language identification system语⾔检测是⼀个很有意思的话题,不过相对⽐较成熟,这⽅⾯的解决⽅案很多,也有很多不错的开源⼯具包,不过对于Python来说,我使⽤过langid这个⼯具包,也⾮常愿意推荐它。langid⽬前⽀持97种语⾔的检测,提供了很多易⽤的功能,包括可以启动⼀个建议的server,通过json调⽤其API,可定制训练⾃⼰的语⾔检测模型等,可以说是“⿇雀虽⼩,五脏俱全”。4.7 JiebaJieba做最好的Python中⽂分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the bestPython Chinese word segmentation module.好了,终于可以说⼀个国内的Python⽂本处理⼯具包了:结巴分词,其功能包括⽀持三种分词模式(精确模式、全模式、搜索引擎模式),⽀持繁体分词,⽀持⾃定义词典等,是⽬前⼀个⾮常不错的Python中⽂分词解决⽅案。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688107161a82519.html
评论列表(0条)