首页  >  文章  >  后端开发  >  如何有效地对 Pandas DataFrame 中的多列进行标签编码?

如何有效地对 Pandas DataFrame 中的多列进行标签编码?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-21 22:52:13926浏览

How to Efficiently Label Encode Multiple Columns in a Pandas DataFrame?

Scikit-Learn 中跨多列的标签编码

在 DataFrame 中处理多列分类数据时,可能会很乏味且为每列创建单独的 LabelEncoder 对象效率低下。当处理包含大量基于字符串的分类数据的数据集时,通常会出现此问题。

问题描述:

尝试将单个 LabelEncoder 对象应用于整个 DataFrame导致错误,如提供的代码片段所示。错误消息“错误的输入形状 (6, 3)”表示 LabelEncoder 需要一维值数组,而不是具有多列的 DataFrame。

解决方案:

为了解决这个问题,建议利用 pandas 的 apply() 方法,这个优雅的解决方案涉及将 LabelEncoder 的 fit_transform() 方法应用于其中的每一列。方法如下:

df.apply(LabelEncoder().fit_transform)

此方法迭代每一列,应用 LabelEncoder 转换,并返回带有编码值的新 DataFrame。

其他注意事项:

  • 逆转换:要将编码值解码回其原始类别,请在编码的 DataFrame 上使用 inverse_transform() 方法。
  • 多个编码器:如果不同的 LabelEncoder 参数需要不同列,考虑使用字典来存储编码器,如扩展答案中所示。
  • 列选择: 对于并非所有列都需要标签编码的场景,请使用 ColumnTransformer,它可以转换列子集的规范。

推荐替代方案:

在 Scikit-Learn 0.20 及更高版本中,建议使用 OneHotEncoder 作为更有效的替代方案字符串数据的 LabelEncoder。它直接支持 one-hot 编码,这通常是机器学习模型中分类数据的首选表示形式。

OneHotEncoder().fit_transform(df)

通过利用这些技术,从业者可以有效地处理多列基于字符串的分类数据的标签编码数据,方便准备用于机器学习分析的数据集。

以上是如何有效地对 Pandas DataFrame 中的多列进行标签编码?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn