Python常用的库有哪些?
Python 社区的生态已然非常完备,为我们提供了很多高质量的类库。这时,我们没有必要重复造轮子。对于一些优秀的类库而言,“他山之石,可以攻玉”,采用“拿来主义”,为我所用,不失为上策。
下面就介绍一下与机器学习相关的 Python 常用类库。
为了提高性能,NumPy 参考了 CPython(用 C语言实现的 Python 及其解释器)的设计,其本身也是用 C语言开发的,也就是说,Numpy 的数据处理速度和 C语言是同级别的。
NumPy 除了提供一些数学运算函数,还提供与 MATLAB(由美国 MathWorks 公司出品的著名商业数学软件)相似的功能与操作方式,可让用户高效地直接操作向量或矩阵。
但 NumPy 被定位为数学基础库,属于比较底层的 Python 库。如果想快速开发出可用的程序,可采用更为高阶的库— SciPy 和 Pandas,下面分别对它们进行简单介绍。
SciPy 构建于 NumPy 之上,功能更为强大,在常微分方程求解、线性代数、信号处理、图像处理及稀疏矩阵操作等方面,均能提供强有力的支持。
相比于 NumPy 是一个纯数学层面的计算模块,SciPy 是一个更为高阶的科学计算库。比如说,如果要对矩阵进行操作,只用到纯数学的基础模块,可在 NumPy 库中找到对应的模块。但如果想要实现特定功能,如稀疏矩阵操作,那相应模块可能就需要在 SciPy 库中找了。
SciPy 库需要 NumPy 库的支持。出于这种依赖关系,NumPy 库的安装要先于 SciPy 库的安装。
Pandas 库提供了操作大型数据集所需的高效工具,支持带有坐标轴的数据结构,这能防止由于数据没有对齐、采用不同索引而产生的某些处理错误。在数据预处理或数据清洗上,Pandas 提供了处理缺失值、转换、合并及其他类 SQL 的功能。这些功能大大减轻了一线机器学习研发人员的负担。
在某种程度上,Pandas 是实施数据清洗/整理(Data Wrangling)最好用的工具之一。
类似于 NumPy 是 Pandas 的基础库一样,Matplotlib 也可以作为其他更高阶绘图工具的基础库。Seaborn 就是这样的高级库,它对 Matplotlib 做了二次封装。Matplotlib 功能虽然很强大,但想用好却有较高的门槛。比如,通过 Matplotlib 绘制的图形,如果还想更加精致,就需要做大量的微调工作。因此,在某些场合,可用 Seaborn 替代 Matplotlib 进行绘图。
scikit-learn 构建于 NumPy 和 SciPy 之上,提供了一系列经典的机器学习算法,如聚类、分类和回归等,也提供了一些数据集供初学者学习、使用,如鸢尾花分类数据集、波士顿房价预测数据集、手写数字识别数据集等,还提供了统一的接口供用户调用。十多年来,先后有超过 40 位机器学习专家参与 scikit-learn 代码的维护和更新工作,它已成为当前相对成熟的机器学习开源项目。
事实上,除了前面提及的几个常用类库,Python 还提供一些其他实用库。比如,用于网站数据抓取的 Scrapy,用于网络挖掘的 Pattern,用于自然语言处理的 NLTK 和用于深度学习的 TensorFlow 等。
下面就介绍一下与机器学习相关的 Python 常用类库。
数值计算NumPy
NumPy 是“Numeric”(数值)和“Python”的混合简写。顾名思义,它是处理数值计算的 Python 库。为了提高性能,NumPy 参考了 CPython(用 C语言实现的 Python 及其解释器)的设计,其本身也是用 C语言开发的,也就是说,Numpy 的数据处理速度和 C语言是同级别的。
NumPy 除了提供一些数学运算函数,还提供与 MATLAB(由美国 MathWorks 公司出品的著名商业数学软件)相似的功能与操作方式,可让用户高效地直接操作向量或矩阵。
但 NumPy 被定位为数学基础库,属于比较底层的 Python 库。如果想快速开发出可用的程序,可采用更为高阶的库— SciPy 和 Pandas,下面分别对它们进行简单介绍。
科学计算SciPy
SciPy 发音为“Sigh Pie”,它的取义类似于 NumPy,是“Science”(科学)和“Python”的组合,即面向科学计算的 Python 库。SciPy 构建于 NumPy 之上,功能更为强大,在常微分方程求解、线性代数、信号处理、图像处理及稀疏矩阵操作等方面,均能提供强有力的支持。
相比于 NumPy 是一个纯数学层面的计算模块,SciPy 是一个更为高阶的科学计算库。比如说,如果要对矩阵进行操作,只用到纯数学的基础模块,可在 NumPy 库中找到对应的模块。但如果想要实现特定功能,如稀疏矩阵操作,那相应模块可能就需要在 SciPy 库中找了。
SciPy 库需要 NumPy 库的支持。出于这种依赖关系,NumPy 库的安装要先于 SciPy 库的安装。
数据分析Pandas
Pandas 在这里并不是“熊猫”之意,它的英文全称是“Python Data Analysis Library”。见名知意,Pandas 是一款面向 Python 的数据分析库,它同样基于 NumPy 库构建而成。Pandas 库提供了操作大型数据集所需的高效工具,支持带有坐标轴的数据结构,这能防止由于数据没有对齐、采用不同索引而产生的某些处理错误。在数据预处理或数据清洗上,Pandas 提供了处理缺失值、转换、合并及其他类 SQL 的功能。这些功能大大减轻了一线机器学习研发人员的负担。
在某种程度上,Pandas 是实施数据清洗/整理(Data Wrangling)最好用的工具之一。
图形绘制Matplotlib与Seaborn
众所周知,MATLAB、R 及 gnuplot 等都具有非常出色的绘图功能。事实上,Python 也提供了绘图功能非常强大的类库 Matplotlib。使用它可以很方便地绘制散点图、折线图、条形图、直方图、饼图等专业图形。类似于 NumPy 是 Pandas 的基础库一样,Matplotlib 也可以作为其他更高阶绘图工具的基础库。Seaborn 就是这样的高级库,它对 Matplotlib 做了二次封装。Matplotlib 功能虽然很强大,但想用好却有较高的门槛。比如,通过 Matplotlib 绘制的图形,如果还想更加精致,就需要做大量的微调工作。因此,在某些场合,可用 Seaborn 替代 Matplotlib 进行绘图。
scikit-learn
机器学习是当下的研究热点,Python 社区更是在此领域引领了潮流,scikit-learn 便是其中的佼佼者。scikit-learn 构建于 NumPy 和 SciPy 之上,提供了一系列经典的机器学习算法,如聚类、分类和回归等,也提供了一些数据集供初学者学习、使用,如鸢尾花分类数据集、波士顿房价预测数据集、手写数字识别数据集等,还提供了统一的接口供用户调用。十多年来,先后有超过 40 位机器学习专家参与 scikit-learn 代码的维护和更新工作,它已成为当前相对成熟的机器学习开源项目。
事实上,除了前面提及的几个常用类库,Python 还提供一些其他实用库。比如,用于网站数据抓取的 Scrapy,用于网络挖掘的 Pattern,用于自然语言处理的 NLTK 和用于深度学习的 TensorFlow 等。