Scikit-Learn 中跨多列的标签编码
在 DataFrame 中处理多列分类数据时,可能会很乏味且为每列创建单独的 LabelEncoder 对象效率低下。当处理包含大量基于字符串的分类数据的数据集时,通常会出现此问题。
问题描述:
尝试将单个 LabelEncoder 对象应用于整个 DataFrame导致错误,如提供的代码片段所示。错误消息“错误的输入形状 (6, 3)”表示 LabelEncoder 需要一维值数组,而不是具有多列的 DataFrame。
解决方案:
为了解决这个问题,建议利用 pandas 的 apply() 方法,这个优雅的解决方案涉及将 LabelEncoder 的 fit_transform() 方法应用于其中的每一列。方法如下:
df.apply(LabelEncoder().fit_transform)
此方法迭代每一列,应用 LabelEncoder 转换,并返回带有编码值的新 DataFrame。
其他注意事项:
推荐替代方案:
在 Scikit-Learn 0.20 及更高版本中,建议使用 OneHotEncoder 作为更有效的替代方案字符串数据的 LabelEncoder。它直接支持 one-hot 编码,这通常是机器学习模型中分类数据的首选表示形式。
OneHotEncoder().fit_transform(df)
通过利用这些技术,从业者可以有效地处理多列基于字符串的分类数据的标签编码数据,方便准备用于机器学习分析的数据集。
以上是如何有效地对 Pandas DataFrame 中的多列进行标签编码?的详细内容。更多信息请关注PHP中文网其他相关文章!