您应该了解的2020年顶级Python库

2020-12-30 06:21:24

免责声明:今年,我们的选择在很大程度上受机器学习/数据科学图书馆的影响,尽管其中某些确实对非数据科学人士非常有用。此外,尽管我们有10个主要选择(还有奖金),但我们还是决定增加一个新的“荣誉提及”部分,以便对我们发现但不能遗漏的其他图书馆公道。

这篇文章的精神是使这些图书馆更具可见性,并围绕我们可能已经错过的其他一些绝佳选择引发讨论(在评论中或其他地方)-我们相信确实存在。

您不一定总是需要编写CLI应用程序,但这样做时最好是没有麻烦的体验。在FastAPI取得巨大成功之后,tiangolo使用了相同的原理为我们带来了Typer:一个新的库,使您可以利用Python 3.6+的类型提示功能来编写命令行界面。

该设计确实使Typer脱颖而出。除了确保代码已正确记录之外,您还可以轻松进行CLI界面的验证。通过使用类型提示,您可以在Python编辑器(如VSCode)中获得自动补全功能,这将提高您的生产率。

为了增强其功能,Typer在内部位于Click的顶部,而Click则是众所周知的,并且经过了严格的测试。这意味着它可以利用其所有好处,社区和插件,同时以更少的样板代码开始简单,并根据需要变得越来越复杂。

与往常一样,该文档确实很有帮助,并且应该成为其他项目的典范。绝对不能错过!

遵循CLI的主题,谁说终端应用程序必须是单色白色,或者如果您是真正的黑客,则必须是绿色,是黑色?

是否要在终端输出中添加颜色和样式?脉动地打印复杂表?毫不费力地显示漂亮的进度条?降价?表情符号? Rich检查所有框。查看示例屏幕快照,以了解可能的情况:

绝对可以将使用终端应用程序的体验提升到全新水平的库。

尽管如我们所见,终端应用程序可以很漂亮,但有时还不够,您需要一个真正的GUI。为此,流行的Dear ImGui C ++项目的Python端口Dear PyGui。

尊敬的PyGui利用了在视频游戏中广为流行的即时模式范例。这基本上意味着动态GUI是逐帧独立绘制的,无需保留任何数据。这使得该工具与其他Python GUI框架根本不同。它具有高性能,并使用计算机的GPU来促进高度动态界面的构建,这在工程,仿真,游戏或数据科学应用程序中经常需要。

亲爱的PyGui可以在没有陡峭学习曲线的情况下使用,并且可以在Windows 10(DirectX 11),Linux(OpenGL 3)和MacOS(Metal)上运行。

简单的喜悦。这是让您思考的库之一:以前没有人想到过这件事吗?

PrettyErrors只做一件事并且做得很好。在支持彩色输出的终端中,它将隐秘的堆栈轨迹转换为更适合用微弱的人眼解析的东西。不再需要扫描整个屏幕来查找异常的原因……您现在就可以一目了然!

我们程序员喜欢解决问题和代码。但是有时,我们需要向其他同事解释复杂的建筑设计,这是非常需要的项目文档的一部分。传统上,我们使用GUI工具,在其中我们可以处理图表和可视化以放入演示文稿和文档。但这不是唯一的方法。

图表使您无需任何设计工具即可直接在Python代码中绘制云系统架构。它具有的图标对于多个云提供商(包括AWS,Azure,GCP)将派上用场。这使创建箭头和组非常容易。真的,只有几行代码!

基于代码的图表的最好之处是什么?您可以通过标准git使用版本控制来跟踪更改!开发人员会很高兴。

在进行机器学习项目的研究和实验时,总是有无数的设置可以尝试。在非平凡的应用程序中,配置管理会变得相当复杂,非常快。有一种结构化的方式来处理这种复杂性不是很好吗?

Hydra是一种工具,可让您以可组合的方式构建配置,并从命令行或配置文件覆盖某些部分。

为了说明可以通过该库简化的一些常见任务,假设有一个我们正在尝试的模型的基本体系结构,以及它的多种变体。使用Hydra,可以定义基本配置,然后运行多个作业,并进行以下更改:

├──变化│├──option_a.yaml│└──option_b.yaml├──base.yaml└──train_model.py

Hydra的堂兄OmegaConf为分层配置系统的基础提供了一致的API,并支持YAML,配置文件,对象和CLI参数等不同来源。

每一种提高数据科学团队生产力的工具都值得金。没有理由让从事数据科学项目的人每次都重新发明轮子,反复思考如何更好地组织其项目中的代码,使用维护得不好的“ PyTorch样板”,或者使用更高级别的抽象的贸易潜力控制。

闪电通过将科学与工程分离而有助于提高生产率。从某种意义上说,它使您的代码更简洁,有点像TensorFlow的Keras。但是,这并不能控制您。它仍然是PyTorch,您可以访问所有常用的API。

该库可帮助团队利用围绕组织的软件工程的良好实践和明确的组件职责来构建可轻松扩展以在多个GPU,TPU和CPU上进行训练的高质量代码。

一个可以帮助数据科学团队的初级成员产生更好结果的库,但是,由于整体生产力的提高,而没有放弃控制权,更有经验的成员会喜欢它。

并非所有的机器学习都是深度学习。通常,您的模型由scikit-learn中实现的更传统的算法(例如,Random Forest)组成,或者使用诸如流行的LightGBM和XGBoost之类的梯度增强方法。

但是,深度学习领域正在发生许多进步。像PyTorch这样的框架正在以惊人的速度发展,并且硬件设备已经过优化,可以更快地运行张量计算并降低功耗。如果我们可以利用所有这些工作来更快,更高效地运行传统方法,那岂不是很好吗?

这是Hummingbird的用武之地。微软提供的这个新库可以将训练有素的传统ML模型编译为张量计算。这很棒,因为它使您无需重新设计模型。

到目前为止,Hummingbird支持转换为PyTorch,TorchScript,ONNX和TVM,以及各种ML模型和矢量化器。推理API也与Sklearn范例非常相似,可让您重用现有代码,但将实现更改为Hummingbird生成的代码。这是一个值得关注的工具,因为它获得了对模式模型和格式的支持!

几乎每个数据科学家在职业生涯中的某个时候都曾处理过高维数据。不幸的是,人脑没有足够的连线直观地处理这种数据,因此我们必须诉诸其他技术。

今年初,Facebook发布了HiPlot,这是一个库,可使用并行绘图和其他图形方式来表示信息,从而帮助发现高维数据中的相关性和模式。他们的发布博客中对概念进行了说明,但基本上,这是一种可视化和过滤高维数据的好方法。

HiPlot具有交互性,可扩展性,您可以从标准Jupyter笔记本电脑或通过其自己的服务器使用它。

随着Python库生态系统变得越来越复杂,我们发现自己正在编写越来越多的依赖C扩展和多线程代码的代码。在衡量性能时,这成为一个问题,因为CPython内置的分析器无法正确处理多线程和本机代码。

那就是Scalene进行救援的时候。 Scalene是用于Python脚本的CPU和内存探查器,能够正确处理多线程代码并区分运行Python和本机代码所花费的时间。无需修改代码,只需要在命令行中使用scalene运行脚本,脚本就会为您生成文本或HTML报告,显示代码每一行的CPU和内存使用情况。

如果不包括我们自己的用于视频分析应用程序的本地婴儿,我们将无法完成此列表。

Norfair是一个可定制的轻量级Python库,用于实时对象跟踪。换句话说,它为不同帧中的每个检测到的对象分配一个唯一的ID,以便您随着时间的推移识别它们。使用Norfair,您只需几行代码就可以为任何检测器添加跟踪功能。 “任何探测器”吗?是。无论对象表示是什么样的:包围盒(4个坐标),单点质心,具有超过一定概率阈值的可变数量关键点的人体姿态估计系统的输出,或其他任何东西。

用户定义了用于计算跟踪对象与检测之间的距离的功能,可以根据需要完全自定义。

它也很快,并且可以实时运行。但是,真正的美在于它是非常模块化的,您可以仅使用几行代码就可以使用现有的检测代码库并为其添加跟踪功能。我们欢迎任何意见和建议,并每天努力提高Norfair的功能!

quart-具有Flask兼容API的异步Web框架。一些现有的Flask扩展程序甚至可以使用!

不在场检测-监视生产模型中的异常值和分布漂移,以获取表格数据,文本,图像和时间序列。

einops —在2020年流行,einops可让您编写张量操作以获得可读且可靠的代码,并支持numpy,PyTorch,TensorFlow等。 Karpathy推荐,您还需要其他吗?

节-斯坦福提供60多种语言的准确自然语言处理工具。针对不同任务的多个可用的预训练模型。

数据集-来自HuggingFace,轻巧且可扩展的库,可轻松共享和访问用于自然语言处理(NLP)等的数据集和评估指标

sktime-提供专用的时间序列算法和scikit-learn兼容工具,用于构建,调整和评估组合模型。还要检查其配套的sktime-dl软件包,以获取基于深度学习的模型。

netron-神经网络,深度学习和机器学习模型的可视化工具。支持的格式比我所知道的还要多。

pycaret —包装了几个常见的ML库,使您的工作效率大大提高,节省了数百行代码。

张量传感器-通过改善错误消息并提供可视化效果,帮助您正确确定张量数学的尺寸。

我要感谢Ian Tayler,GermánHoffman和SebastiánSosa在此博客文章上的合作。