7个提升机器学习模型开发的 Pandas 技巧

7 Pandas Tricks to Improve Your Machine Learning Model Development

7个提升机器学习模型开发的 Pandas 技巧
图片作者 | ChatGPT

引言

如果您正在阅读本文,您可能已经知道机器学习模型的性能不仅取决于所选算法,还受到模型训练所用数据的质量和表示方式的极大影响。

数据预处理和特征工程是机器学习工作流程中最重要的步骤之一。在 Python 生态系统中,**Pandas** 是处理这些数据操作任务的首选库,这一点您可能也知道。掌握一些精选的 Pandas 数据转换技术可以显著简化您的工作流程,使您的代码更清晰、更高效,并最终带来性能更好的模型。

本教程将引导您了解七个实用的 Pandas 场景及其技巧,这些技巧可以增强您的数据准备和特征工程过程,为您的下一个机器学习项目的成功奠定基础。

准备我们的数据

为了演示这些技巧,我们将使用经典的 泰坦尼克号 数据集。这是一个有用的示例,因为它包含数值和分类数据的混合,以及缺失值,这些都是您在实际机器学习任务中经常会遇到的挑战。

我们可以直接从 URL 将数据集轻松加载到 Pandas DataFrame 中。

输出

这给我们提供了一个 DataFrame,其中包含 Survived(我们的目标变量)、Pclass(乘客等级)、SexAge 等列。

现在,让我们拿出我们的锦囊妙计。

1. 使用 query() 进行更清晰的数据筛选

数据筛选是一项永无止境的任务,无论是创建用于训练的子集还是探索特定片段。使用布尔索引的标准方法在多条件情况下会变得笨拙和复杂。query() 方法通过允许您使用字符串表达式进行筛选,提供了更具可读性和直观的替代方案。

标准筛选

使用 query() 进行筛选

相同输出

我敢肯定您会同意,query() 版本更清晰易读,特别是当条件数量增加时。

2. 使用 cut() 为连续变量创建区间

某些模型(例如线性模型和决策树)可以通过离散化连续变量来受益,这有助于模型捕捉非线性关系。pd.cut() 函数可用于将数据分箱到自定义范围。为了演示,我们来创建年龄组。

输出

这个新的 AgeGroup 特征是一个强大的分类变量,您的模型现在可以使用它。

3. 使用 .str 访问器从文本中提取特征

文本列通常包含有价值的结构化信息。Pandas 中的 .str 访问器提供了一整套字符串处理方法,可以一次性作用于整个 Series。我们可以使用 .str 访问器和正则表达式从 Name 列中提取乘客的称谓(例如“Mr.”、“Miss.”、“Dr.”)。

输出

这个 Title 特征经常被证明是泰坦尼克号模型中生存的强有力预测因子。

4. 使用 transform() 进行高级归因

简单地删除含有缺失数据的行通常不是一个选择,因为它可能导致数据丢失。在许多情况下,更好的策略是归因。虽然用全局平均值或中位数填充很常见,但更复杂的方法是基于相关组进行归因。例如,我们可以用相同 Pclass 中乘客的年龄中位数来填充缺失的 Age 值。groupby()transform() 方法使这变得简单明了,而且这是一个优雅的解决方案。

输出

我们做到了;不再有缺失的年龄。出于各种原因,这种基于分组的归因通常比使用单个全局值更准确。

5. 使用方法链和 pipe() 简化工作流程

机器学习预处理流程通常涉及多个步骤。将这些操作链接在一起可以使代码更具可读性,并有助于避免创建不必要的中间 DataFrame。pipe() 方法通过允许您将自己的自定义函数整合到链中,进一步推动了这一点。

首先,我们定义一个自定义函数来删除列,另一个自定义函数将 Sex 列编码为 0 代表 male,1 代表 female。然后,我们可以使用 pipe 创建一个管道,将这两个自定义函数整合到我们的链中。

以及我们的输出

这种方法对于构建干净、可重现的机器学习管道非常有效。

6. 使用 map() 高效映射序数类别

虽然独热编码是名义分类数据的标准方法,但序数数据(类别具有自然顺序)最好通过映射到整数来处理。字典和 map() 方法非常适合此目的。让我们假设乘客等级具有质量排序。

这是我们的输出

这是一种快速而明确的方式来编码序数关系,以便您的模型学习。

7. 使用 astype() 优化内存

处理大型数据集时,内存使用可能会成为瓶颈。Pandas 默认使用较大的数据类型(如 int64float64),但您通常可以使用较小的数据类型而不会丢失信息。将对象列转换为 category dtype 是一种有效的优化方法。

输出结果

您会经常看到内存占用显著减少,这对于在大型数据集上训练模型而不会导致机器崩溃变得非常重要。

总结

机器学习始终始于精心准备的数据。虽然算法的复杂性、超参数以及模型构建过程常常是焦点,但数据的高效操作才是真正的关键。

这里介绍的七个 Pandas 技巧不仅仅是编码捷径,它们代表了清理数据、设计有洞察力的特征以及构建健壮、可重现模型的强大策略。

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。