Python在解决数据科学任务和挑战方面继续保持领先地位。这篇文章,我们新增了一些库,并对已经提到的库进行了更新,概述了当今数据科学中最有用的Python库。
我们的选择实际上包含了20多个库,因为其中一些是彼此的替代品,解决同样的问题。因此,我们将它们分组,因为目前很难区分哪一个库是具体的领导者。
核心库和统计库
NumPy 传统上,我们从科学应用的库开始列出我们的清单,而NumPy是这个领域的主要包之一。它旨在处理大型多维数组和矩阵,广泛的高级数学函数和实现方法集使得可以对这些对象执行各种操作。 在过去的一年中,该库进行了大量改进。除了修复错误和兼容性问题外,最重要的改变涉及到样式选项,即NumPy对象的打印格式。此外,一些函数现在可以处理Python中可用的任何编码的文件。
SciPy 另一个科学计算的核心库是SciPy。它基于NumPy,因此扩展了其功能。SciPy的主要数据结构再次是由NumPy实现的多维数组。该软件包包含有助于解决线性代数、概率论、积分计算等多个任务的工具。 SciPy在不同操作系统中持续集成的形式下进行了重大构建改进,包括新的函数和方法以及特别重要的优化器更新。此外,许多新的BLAS和LAPACK函数被封装。
Pandas Pandas是一个Python库,提供高级数据结构和各种各样的分析工具。该软件包的一个伟大特点是能够将相对复杂的数据操作转化为一个或两个命令。Pandas包含许多内置方法,用于对数据进行分组、过滤和组合,以及时间序列功能。所有这些都伴随着令人印象深刻的速度指标。 Pandas库有几个新版本,包括数百个新功能、增强功能、错误修复和API更改。改进涉及Pandas的分组和排序数据能力,适用于apply方法的更合适的输出,以及执行自定义类型操作的支持。
StatsModels Statsmodels是一个Python模块,提供许多进行统计数据分析的机会,例如统计模型估计、执行统计测试等。借助它的帮助,您可以实现许多机器学习方法并探索不同的绘图可能性。 该库正在不断发展,丰富着新的机会。因此,今年带来了时间序列改进和新的计数模型,即广义泊松、零膨胀模型和负二项式P,并且新的多元方法-因子分析、MANOVA和ANOVA内重复测量。
可视化库
- Matplotlib Matplotlib是一个用于创建二维图表和图形的低级库。借助它的帮助,您可以构建各种图表,从直方图和散点图到非笛卡尔坐标图形。此外,许多流行的绘图库都是与Matplotlib一起设计的。 Matplotlib库有关于颜色、大小、字体、图例等方面的样式变化。例如,外观改进的一个例子是自动对齐坐标轴图例,在显著的颜色改进中是一个新的色盲友好的颜色循环。
Seaborn Seaborn本质上是基于Matplotlib库的更高级别的API。它包含更适合处理图表的默认设置。此外,还有一个丰富的可视化库,包括一些复杂类型,如时间序列,联合图和小提琴图。 Seaborn的更新主要涵盖错误修复。但是,有关于FacetGrid或PairGrid之间的兼容性以及增强交互式Matplotlib后端的改进,添加了可视化的参数和选项。
Plotly Plotly是一个流行的库,可以轻松地构建复杂的图形。该软件包适用于交互式 Web 应用程序。它的卓越可视化包括轮廓图形、三元图和 3D 图表。 该库的不断增强带来了新的图形和功能,包括对“多个链接视图”的支持,以及动画和 crosstalk 集成。
- Bokeh Bokeh库可在浏览器中使用JavaScript小部件创建交互式和可扩展的可视化。该库提供了一个多功能图形集合、样式选项、交互能力(如链接图形、添加小部件和定义回调)以及许多其他有用功能。 Bokeh库增强了交互能力,例如分类刻度标签的旋转,小型缩放工具和自定义工具提示字段增强等。
- Pydot Pydot是一个用于生成复杂有向和无向图的库。它是Graphviz的一个纯Python接口。使用它可以展示图形的结构,在构建基于神经网络和决策树的算法时非常有用。
机器学习库
- Scikit-learn 该基于NumPy和SciPy的Python模块是处理数据的最佳库之一。它提供了许多标准机器学习和数据挖掘任务的算法,如聚类、回归、分类、降维和模型选择。 该库进行了许多增强。交叉验证已经进行了修改,提供了使用多个度量标准的能力。几种训练方法,如最近邻和逻辑回归,也经历了一些小的改进。最后,其中一个主要更新是完成了《Scikit-learn常用术语和API元素词汇表》,介绍了Scikit-learn中使用的术语和约定。
XGBoost / LightGBM / CatBoost 梯度提升是最流行的机器学习算法之一,其基本原理是构建一系列经过不断完善的基本模型,通常为决策树的集合。因此,有些专门的库用于快速、方便地实现这种方法。我们认为XGBoost、LightGBM和CatBoost值得特别关注。它们是竞争对手,解决共同的问题,并以几乎相同的方式使用。这些库提供了高度优化、可扩展和快速的梯度提升实现,使它们在数据科学家和Kaggle竞赛中非常受欢迎,因为很多比赛都是通过这些算法赢得的。
Eli5 通常机器学习模型的预测结果并不完全清晰,这就是eli5库帮助解决的难题。它是一个用于可视化和调试机器学习模型、逐步跟踪算法工作的软件包。它提供对scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite库的支持,并对每个库执行不同的任务。
深度学习库
- TensorFlow TensorFlow是一个流行的深度学习和机器学习框架,由Google Brain开发。它提供了使用多个数据集处理人工神经网络的能力。TensorFlow最流行的应用程序包括对象识别、语音识别等。此外,还有在常规TensorFlow之上的不同层级辅助库,如tflearn、tf-slim、skflow等。 这个库快速推出新版本,引入越来越多的功能。最近的一些更新包括修复潜在的安全漏洞以及改进了TensorFlow和GPU的集成,例如在一个机器上的多个GPU上运行Estimator模型。
- PyTorch PyTorch是一个深度学习和机器学习的流行框架,由Facebook AI Research实验室开发。它提供了一个动态计算图形式的张量库,可以高效地进行自动微分,可用于训练神经网络、深度学习模型等。PyTorch在自然语言处理、计算机视觉等领域有广泛应用。此外,PyTorch还有许多扩展库,例如PyTorch Lightning,用于简化深度学习模型的训练过程。 PyTorch的发展非常迅速,不断推出新功能和更新。最近的更新包括了自动混合精度支持,可在训练期间自动转换计算类型以提高速度和内存效率,以及TorchScript,一个用于将PyTorch模型导出为可在不同设备上运行的高性能序列化格式的工具。
- Keras Keras是一个高级神经网络库,运行在TensorFlow、Theano以及现在新发布的版本中也可以使用CNTK和MxNet作为后端。它简化了许多具体任务,并大大减少了单调代码的数量。然而,它可能不适合一些复杂的事情。 这个库面临性能、易用性、文档和API方面的改进。一些新功能是Conv3DTranspose层、新的MobileNet应用和自标准化网络。
分布深度学习库
- Dist-keras / elephas / spark-deep-learning 深度学习问题现在变得至关重要,因为越来越多的用例需要大量的工作和时间。然而,使用像Apache Spark这样的分布式计算系统处理这样数量的数据要容易得多,这再次扩展了深度学习的可能性。因此,dist-keras、elephas和spark-deep-learning正变得越来越受欢迎并迅速发展,很难单独指出其中的一个库,因为它们都旨在解决一个共同的任务。这些软件包允许您直接使用Apache Spark训练基于Keras库的神经网络。Spark-deep-learning还提供了使用Python神经网络创建流水线的工具。
自然语言处理库 17.NLTK NLTK是一组库,是一个完整的自然语言处理平台。通过NLTK,您可以以各种方式处理和分析文本,对其进行分词和标记,提取信息等。NLTK还用于原型设计和构建研究系统。
对该库的增强涵盖API和兼容性方面的微小更改以及对CoreNLP的新界面。
- SpaCy SpaCy是一个自然语言处理库,具有出色的示例、API文档和演示应用程序。该库使用Cython语言编写,这是Python的C扩展。它支持近30种语言,提供简单的深度学习集成,并承诺具有鲁棒性和高精度。SpaCy的另一个重要特性是其针对整个文档处理而设计的架构,无需将文档拆分为短语。
- Gensim Gensim 是一个基于 NumPy 和 Scipy 的 Python 库,用于进行强大的语义分析、主题建模和向量空间建模。它提供了一些常用的 NLP 算法的实现,比如 word2vec。虽然 gensim 有自己的 models.wrappers.fasttext 实现,但也可以使用 fasttext 库来高效地学习单词表示。 数据爬取库
- Scrapy Scrapy是一个库,用于创建蜘蛛机器人,扫描网站页面并收集结构化数据。此外,Scrapy可以从API中提取数据。由于其可扩展性和可移植性,该库非常方便。
在过去的一年中,通过几次升级,Scrapy在代理服务器方面有了一些改进,错误通知和问题识别系统也得到了改善。还有使用scrapy parse进行元数据设置的新可能性。
总结:
与过去相比,一些新的现代库正在变得流行,而已经成为数据科学任务经典的库则在不断改进。同样,有一个表格显示了Github活动的详细统计信息。
即使我们列出了20种,它仍然可能没有涵盖一些其他值得关注的优秀和有用的库。因此,请在下面的评论区分享您的喜爱之处,以及有关我们提到的软件包的任何想法。
感谢您的关注!