前言
Python本身作为一种简洁高效的语言深受广大程序员的喜爱,而基于python语言所开发出的软件包就好比是python强有力的武器装备,使得其解决更为专业的问题时表现得为优秀。软件包的使用非常方便,通常只需使用pip指令便可自动下载安装,也可通过官网所给出的资源自己下载安装。接下来我就向大家介绍十款当下最热门的软件包。
1
Numpy 数据处理
Numpy是Python用于科学计算的基本包。其中包括:
一个强大的n维数组对象
复杂的(广播)函数
用于集成C/ C++和Fortran代码的工具
有效的线性代数,傅里叶变换和随机数能力
除了其明显的科学用途之外,Numpy还可以用作通用数据的高效多维容器
下面以几个非常简单的实例介绍一下Numpy的功能。
先定义两个矩阵:
编译后,即可通过规则输出矩阵乘法的结果:
Numpy还可以生成随机数组,并计算最大值,最小值,求和等:
Numpy还有更多强大的,复杂的功能,感兴趣的同学可以前往numpy的官网了解一下喔~
https://numpy.org/
2
Scipy 数值计算
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
Scipy里面有很多模块,用以解决不同的数学问题,我们以scipy.optimize模块,一个用来提供求函数最值、曲线拟合和求根的算法为例,寻求函数的最小值简要说明scipy的功能。
如图:
显然这是一个非凸优化问题,对于这类函数的最小值问题一般是从给定的初始值开始进行一个梯度下降,在optimize中一般使用bfgs算法。
结果显示在经过五次迭代之后找到了一个局部最低点-7.945823,显然这并不是函数的全局最小值,只是该函数的一个局部最小值,这也是拟牛顿算法(BFGS)的局限性,如果一个函数有多个局部最小值,拟牛顿算法可能找到这些局部最小值而不是全局最小值,这取决于初始点的选取。在我们不知道全局最低点,并且使用一些临近点作为初始点,那将需要花费大量的时间来获得全局最优。此时可以采用暴力搜寻算法,它会评估范围网格内的每一个点。对于本例,如下:
输出结果:
[-1.30641113]
感兴趣的同学也可以去scipy的官网https://www.scipy.org/了解喔~
3
Matplotlib 数据可视化
这个软件包的名字是不是和我们熟悉的matlab有点相似?没错它就是受matlab启发创建的。它拥有着和matlab一样强大的面对过程的绘图功能,是高效的数据可视化工具。
同样的,通过实例来了解一下:
就简单的画个直方图吧,首先还是需要导入模块,因为同样要用到数据,通常情况下,matplotlib是和numpy一起使用的。
运行后就会得到我们需要的图:
是不是很方便快捷啊!matplotlib还可以实现多种数学图形的绘制,有兴趣的同学可以在官网上了解一下。
https://matplotlib.org/
4
StatsModels 统计分析
同样地,有没有觉得这个软件包的名字和stata很像,没错它也是一个类似于stata的用于统计建模和计量经济学,包括描述性统计、统计模型和推断的软件包。
我们通过计量经济学里最经典的最小二乘拟合来了解它:
我们可以通过R语句输入数据,也可以通过之前介绍的numpy以数组的方式输入数据,我们采用后者。
运行结果如下:
Statsmodels的官网是:
http://www.statsmodels.org/stable/index.html#
还有很多功能等待你去了解。
5
Pandas 数据分析
Pandas 是基于numpy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
Pandas通常有两种数据结构,一种是一维的series,还有一种是二维的dataframe,当然还有三维数据结构,以及以时间为索引的结构等。
在pandas中,可以通过直接导入文件输入数
据,也可以自己手动输入简单数据,我们以dataframe说一个简单的例子。
运行结果如下:
至于如何规定顺序,加入索引可以在官网
https://pandas.pydata.org/了解更多。
6
Scikit-learn 机器学习
Scikit-learn的简称是SKlearn,它是python上专门用于机器学习的模块,包含了分类,回归,无监督,数据降维,数据预处理等常用的机器学习方法。例如我们可以采用其库中自带的波士顿房价数据,利用线性回归的方法对其进行预测,首先建立模型,接着划分训练集和测试集,最后输出预测结果,我们还通过导入结果评价包,利用平均绝对值误差对结果进行评价:
官网上有专门对该数据的解释,以及原理说明,感兴趣的同学可以查看:
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html#sklearn.datasets.load_boston
输出结果:
(最后一栏是误差评估结果)
这是sklearn的官网:https://scikit-learn.org/stable/
7
Keras 深度学习
Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
Keras在代码结构上由面向对象方法编写,完全模块化并具有可扩展性,其运行机制和说明文档有将用户体验和使用难度纳入考虑,并试图简化复杂算法的实现难度。Keras支持现代人工智能领域的主流算法,包括前馈结构和递归结构的神经网络,也可以通过封装参与构建统计学习模型。在硬件和开发环境方面,Keras支持多操作系统下的多GPU并行计算,可以根据后台设置转化为Tensorflow、Microsoft-CNTK等系统下的组件 。
Keras主要用于深度学习以及神经网络等方面,因为一般这类项目的代码量都比较大,这里就不举例介绍了,感兴趣的同学可以上官网https://keras.io/zh/或者https://keras.io/了解。
8
Gensim 文本挖掘
Gensim是一个用于从文档中自动提取语义主题的Python库,足够智能,堪比无痛人流。
Gensim可以处理原生,非结构化的数值化文本(纯文本)。Gensim里面的算法,比如Latent Semantic Analysis(潜在语义分析LSA),Latent Dirichlet Allocation,Random Projections,通过在语料库的训练下检验词的统计共生模式(statistical co-occurrence patterns)来发现文档的语义结构。这些算法是非监督的,也就是说你只需要一个语料库的文档集。当得到这些统计模式后,任何文本都能够用语义表示(semantic representation)来简洁的表达,并得到一个局部的相似度与其他文本区分开来。它的官网是https://radimrehurek.com/gensim/
大家可以看下面这个例子:
输出结果是:
可以发现我们把documents中的停用词以及只出现一次的词去掉,提取出了其他关键词,这就是基础的文本挖掘工作啦。
9
NLTK 自然语言处理
NLTK 是一个当下流行的,用于自然语言处理(NLP)的 Python 库。那么 NLP 到底是什么?学习 NLP 能带来什么好处?简单的说,自然语言处理( NLP )就是开发能够理解人类语言的应用程序和服务。
我们生活中经常会接触的自然语言处理的应用,包括语音识别,语音翻译,理解句意,理解特定词语的同义词,以及写出语法正确,句意通畅的句子和段落。
NLTK是一个高效的Python构建的平台,用来处理人类自然语言数据。它提供了易于使用的接口,通过这些接口可以访问超过50个语料库和词汇资源(如WordNet),还有一套用于分类、标记化、词干标记、解析和语义推理的文本处理库,以及工业级NLP库的封装器和一个活跃的讨论论坛。
统计语言学话题方面的手动编程指南加上全面的API文档,使得NLTK非常适用于语言学家、工程师、学生、教育家、研究人员以及行业用户等人群。NLTK可以在Windows、Mac OS X以及Linux系统上使用。最好的一点是,NLTK是一个免费、开源的社区驱动的项目。
NLTK被称为“一个使用Python开发的用于统计语言学的教学和研究的有利工具”和“一个自然语言处理的高效库”。
NLTK的例子其实和Gensim差不多,都是对文本的处理,这里就不举例了,感兴趣的同学可以去官网了解http://www.nltk.org/
10
networkx 创建复杂网络
networkx在02年5月产生,是用python语言编写的软件包,便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。
下面我们举个例子,看看怎样利用networkx来绘制复杂网络图。
输出结果:
看一个风筝就画出来了,如果还想画更多更复杂的图形可以去官网了解喔!
https://networkx.github.io/documentation/stable/index.html
本期作者:郭通
本期编辑校对:秦范
长按,关注数据皮皮侠