2019年必学的10大宝藏级Python库
近几年Python火到没朋友,而它大火离不开这五点,简单易学、免费开源、可移植性、面向对象、丰富的库。
要知道Python标准库非常庞大,它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这也是Python被称“功能齐全”的主要原因,除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。今天我们就来说说2019 Python程序员必须要学的10个库。
01
TensorFlow
TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。它拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究。
TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在内的多个项目以及各类应用程序接口(Application Programming Interface, API)。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码。
TensorFlow提供Python语言下的四个不同版本:CPU版本(tensorflow)、包含GPU加速的版本(tensorflow-gpu),以及它们的每日编译版本(tf-nightly、tf-nightly-gpu)。TensorFlow的Python版本支持Ubuntu 16.04、Windows 7、macOS 10.12.6 Sierra、Raspbian 9.0及对应的更高版本,其中macOS版不包含GPU加速。安装Python版TensorFlow可以使用模块管理工具pip/pip3或anaconda并在终端直接运行。
02
Numpy
NumPy系统是Python的一种开源的科学计算库,主要用于科学计算和数据分析,可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发的。2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展开发了NumPy。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理以及精密的运算库。专为进行严格的数字处理而生。多为很多大型金融公司使用,以及核心的科学计算组织像Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
03
Keras
Keras是一个由Python编写的开源人工神经网络库,是基于 Python 的深度学习库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
Keras支持现代人工智能领域的主流算法,包括前馈结构和递归结构的神经网络,也可以通过封装参与构建统计学习模型。在硬件和开发环境方面,Keras支持多操作系统下的多GPU并行计算,可以根据后台设置转化为Tensorflow、Microsoft-CNTK等系统下的组件。Keras的主要开发者是谷歌工程师François Chollet,此外其GitHub项目页面包含6名主要维护者和超过800名直接贡献者。
你知道什么时候可以使用Keras吗?第一,允许简单而快速的原型设计;第二,在 CPU 和 GPU 上无缝运行;第三,同时支持卷积神经网络和循环神经网络以及两者的组合。要提醒大家的是Keras 兼容Python 2.7-3.6,但是Python2马上就要谢幕了,小伙伴们要注意啦!
04
Scikit-Learn
近日Scikit-Learn官方发布0.22版本,作为深受机器学习玩家青睐的Python库,包含众多顶级机器学习算法,像分类、回归、聚类、模型选择、数据预处理等等。
Scikit-learn 是基于Python语言的机器学习工具,一款简单高效的数据挖掘和数据分析工具,可供大家在各种环境中重复使用,是建立在 NumPy ,SciPy 和 matplotlib 上
开源Python库。
你需要了解的Scikit-learn特性:交叉验证、特征提取、无监督学习算法。Scikit-learn,是基于SciPy针对机器学习领域发展出的一个分支版本,它本身不支持深度学习,不支持GPU加速,需要NumPy和SciPy等其他包的支持。作为Python语言针对机器学习而开发的一个开源框架,它只做机器学习的扩展,只采用经过广泛验证的算法。
05
PyTorch
PyTorch是使用GPU和CPU优化的深度学习的Python库。作为非常有可能改变深度学习领域前景的Python库,主要用于提供一个具有灵活性的深度学习开发平台。当然它的工作流程非常接近Python的科学计算库——numpy,同时PyTorch有易于使用的API,拥有Python的支持、动态计算图、多gpu支持、自定义数据加载器和简化的预处理器等优点。PyTorch更有利于研究人员、爱好者、小规模项目等快速搞出原型,因此自2007年问世以来,吸引了越来越多的机器学习开发人员。
06
Eli5
ELI5是一个Python库,允许使用统一API可视化地调试各种机器学习模型。它内置了对多个ML框架的支持,并提供了一种解释黑盒模型的方法,有助于调试机器学习分类器并解释它们的预测,主要是用于处理文本分类的机器学习。
它为以下机器学习框架和包提供支持:
▪ scikit-learn。目前,ELI5允许解释scikit-learning线性分类器和回归量的权重和预测,将决策树打印为文本或SVG,显示特征重要性并解释决策树和基于树的集合的预测,支持Pipeline和FeatureUnion。ELI5通过scikit-learn了解文本处理实用程序,并可相应地突出显示文本数据。它还允许通过撤消散列来调试包含HashingVectorizer的scikit-learn管道。
▪ XGBoost,显示功能重要性并解释XGBClassifier,XGBRegressor和xgboost.Booster的预测。
▪ LightGBM,显示功能重要性并解释LGBMClassifier和LGBMRegressor的预测。
▪ lightning,解释闪电分类器和回归量的权重和预测。
▪ sklearn-crfsuite。ELI5允许检查sklearn_crfsuite.CRF模型的权重。
ELI5还实现了几种检测黑盒模型的算法:
▪ TextExplainer允许使用LIME算法解释任何文本分类器的预测。有一些实用程序可以将LIME与非文本数据和任意黑盒分类器一起使用,但此功能尚在实验中。
▪ Permutation Importance方法可用于计算黑盒估计器的特征重要性。
07
SciPy
Python在科学计算领域最受欢迎的库,你知道吗?numpy、SciPy、matplotlib,现在我们就来说说SciPy,这个建立在numpy基础上,方便、易于使用且专为科学和工程设计的Python库,它包括了统计、优化、整合以及线性代数模块、傅里叶变换、信号和图像图例,常微分方差的求解等等。
SciPy (pronounced “Sigh Pie”) is open-source software for mathematics, science, and engineering.
Scipy包含的一些强大功能你需要了解下:最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解器等。
SciPy因为可以轻松地处理积分、线性代数以及常微分方程求解等,常被用于数学、科学、工程学等领域……
08
LightGBM
去年知乎有近千人围观“如何看待开源LightGBM?”要知道它一度被评价为“速度惊人”“支持分布式”“代码清晰易懂”“占用内存小”。那LightGBM到底如何呢?LightGBM是一个高性能、分布式的基于决策树算法的梯度提升框架,可用于排序,分类,回归以及很多其他的机器学习任务中,具有训练速度快,效率高;内存使用率更低;更精确;支持并行和GPU学习;能够处理大规模数据等优点。
LightGBM在很多方面表现的比XGBoost优秀的多:像更快的训练效率、低内存、更高的准确率、支持并行化学习、可处理大规模数据以及支持使用category特征,深受机器学习开发人员的欢迎。
09
Theano
Theano是一个可以在CPU或GPU上运行,可以让你去定义,优化,计算数学表达式,特别是多维数组(numpy.ndarray)的Python库。作为Python深度学习中的一个关键基础库,它结合了计算机代数系统(computer algebra system ,CAS) 的特征和优化编译器的功能,可以直接用以创建深度学习模型或包装库,简化程序。
Theano的5个特点你需要知道:和Numpy 紧密结合;支持GPU运算,比CPU快140倍;速超快,稳定性佳;能够动态生成C代码,计算表达式的速度快到超乎你的想象;支持单元测试。
10
Pandas
Pandas是Python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。
作为一个强大的分析结构化数据的工具集,它的使用基础是Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析,同时也提供数据清洗功能。
你必须知道的两大利器:利器一,DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。利器二,它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。
Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
以上10种功能强大的Python库,希望对你日后的学习和工作有所帮助。