用于数据科学的常用Python软件包

296 阅读6分钟

Python有一个强大的数据科学软件包的生态系统。在这篇文章中,我将讨论用于数据科学的最流行的Python软件包,包括基本的以及我最喜欢的可视化、自然语言处理和深度学习的软件包。

数据科学的基本Python包

绝大多数的数据科学工作流程都使用这四个基本的Python包:

我建议使用Anaconda来设置你的Python环境。它的许多好处之一是它会自动安装这4个库,以及许多其他用于数据科学的基本Python包。

Numpy

用Python进行科学计算的基本软件包:

numpy.org/

Numpy是数据科学工作流程的基础,因为它具有高效的向量操作。Numpy ndarray是大量有用的库中的数学计算的主力。

pandas

pandas是一个快速、强大、灵活和易于使用的开源数据分析和操作工具,建立在Python编程语言之上。

pandas.pydata.org/

Pandas数据框架是大多数数据科学工作流程的主要数据对象。一个数据框架基本上是一个数据库表,有不同数据类型的命名列。相比之下,Numpy的ndarrays,每个元素都必须有相同的数据类型。

Scikit Learn

用于预测性数据分析的简单高效的工具

scikit-learn.org/stable/

Scikit Learn是机器学习管道的主力。它建立在Numpy和Matplotlib的基础上,并与Pandas配合得很好。Scitkit Learn提供了几乎所有流行的机器学习算法的实现,包括逻辑回归、随机森林、支持向量机、K-means等等。

Matplotlib

Matplotlib是一个综合库,用于在Python中创建静态、动画和交互式可视化。

matplotlib.org/

Matplotlib是Python的基础数据可视化包。Pandas和Scikit Learn都有依赖Matplotlib的方便的可视化模块。它是一个非常灵活和直观的绘图库。缺点是,创建复杂而美观的图表通常需要很多行代码。

可视化包

我最喜欢的两个用于数据科学的Python可视化包都是建立在Matplotlib之上的。

Seaborn

Seaborn是一个基于matplotlib的Python数据可视化库。它提供了一个高级接口,用于绘制有吸引力的、信息丰富的统计图形。

seaborn.pydata.org/

Seaborn只需一行代码就能做出漂亮的统计图。这里有几个我最喜欢的例子。

用Seaborn数据可视化Python包制作的小提琴图可以帮助你直观地看到一个变量在不同片区的分布。小提琴图显示盒状和须状图以及分布的核密度估计。

用Seaborn数据可视化Python包制作的联合图可以帮助你直观地看到两个变量的联合分布。联合图类似于散点图,但显示的是数值的密度而不是单个观测值。它也显示每个轴上的单变量分布。

Scikit Plot

在机器学习中,有许多可视化的东西经常出现。Scikit-plot用尽可能少的模板生成快速而漂亮的图表和图。

scikit-plot.readthedocs.io/en/stable/

Scikit Plot为许多常见的机器学习图提供了单行代码,包括混淆矩阵热图、ROC曲线、精确召回曲线、提升曲线、累积收益图等。这里有一个例子的幻灯片。

自然语言处理包

自然语言处理(NLP)是我在数据科学领域的专长。你可以用Scikit Learn为NLP完成很多事情,我将在下面快速提到,但还有两个额外的库可以真正帮助你提升你的NLP项目。

Scikit Learn

CountVectorizerTfidfVectorizer使你可以很容易地将一个文档语料库转化为一个术语文档矩阵。当你把这些与LogisticRegression结合起来时,你可以在短时间内训练一个词包分类模型。

Scikit Learn还提供了LatentDirichletAllocation,用于用LDA进行主题建模。我喜欢把它和pyLDAvis搭配起来,以产生像下面这样的交互式主题建模仪表盘。

pyLDAvis生成的交互式主题建模仪表盘的截图。

Spacy

工业级的自然语言处理

spacy.io/

Spacy真的很强大,在我看来,它取代了NLTK包,而NLTK包曾经是语音部分标记、依赖关系解析和命名实体识别等方面的黄金标准。

Spacy只需一行代码就能为你完成所有这些工作,而无需任何NLP知识。而且,它是可扩展的,可以在每个文档中的标记跨度上添加你自己的实体和元数据。

可视化工具也非常棒。请看这个例子的幻灯片。

变形金刚

变形器为自然语言理解(NLU)和自然语言生成(NLG)提供通用架构(BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet...),在100多种语言中拥有超过32种预训练的模型,并在TensorFlow 2.0和PyTorch之间具有深度互操作性。

huggingface.co/transformer…

最先进的语言模型,如BERT和GPT-3,是用一种叫做 "变形器 "的神经网络架构来训练的。Hugging Face的Transformers库允许你将这些预先训练好的模型应用于你的文本数据。

通过这样做,你可以为你的语料库中的每个句子生成向量,并将这些向量作为模型中的特征。或者如果你的任务是变形金刚支持的任务,你可以直接应用一个完整的模型就可以了。他们目前支持以下任务:

  • 序列分类
  • 提取式问题回答
  • 语言建模
  • 命名实体识别
  • 归纳总结
  • 翻译

深度学习包

Python中的深度学习主要由两个软件包主导。TensorFlowPyTorch。还有其他的,但大多数数据科学家都使用这两个中的一个,而且两者的比例似乎大致相当。因此,如果你想训练一个神经网络,我建议你选择TensorFlow或PyTorch。

TensorFlow

一个端到端的开源机器学习平台

www.tensorflow.org/

我使用TensorFlow来满足我所有的深度学习需求。Keras高级封装器,现在已经被纳入TensorFlow 2.0,是我对TensorFlow的青睐。它很直观,相当灵活,而且高效。

TensorFlow与TensorFlow Serving模块一起为生产做好准备。我已经把它和AWS SageMaker结合起来使用,在API后面部署了一个神经网络,但我不会把TensorFlow Serving描述为特别容易使用。

PyTorch

一个开源的机器学习框架,加速了从研究原型到生产部署的路径。

pytorch.org/

我从来没有亲自使用过PyTorch(除了作为Transformers库的后端),所以我可能不会在这里公正地描述它。我听说它在学术界比较流行。他们网站上的这段话表明他们正在努力改变这种形象。

但我的理解是,与TensorFlow相比,PyTorch为设计新型神经网络架构提供了更多的灵活性。所以如果你打算做新架构的研究,PyTorch可能适合你。