首页  >  文章  >  后端开发  >  如何在 Scikit-Learn 中跨多列执行标签编码?

如何在 Scikit-Learn 中跨多列执行标签编码?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-11 02:53:02998浏览

How to Perform Label Encoding Across Multiple Columns in Scikit-Learn?

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

处理包含多列分类数据的数据集时,有必要对这些数据进行编码用于机器学习算法的数字标签。 Scikit-learn 为此提供了 LabelEncoder 类。然而,直接将其应用于具有大量列(例如 50 列)的 DataFrame 可能会因输入形状不正确而导致错误。

为了克服这一挑战,需要一种优雅的方法来同时在所有列上执行标签编码是:

df.apply(LabelEncoder().fit_transform)

作为替代方案,特别是对于 scikit-learn 0.20 及更高版本,请考虑使用OneHotEncoder:

OneHotEncoder().fit_transform(df)

OneHotEncoder 本机支持字符串输入并生成 one-hot 编码向量。

或者,如果您需要控制不同列的 LabelEncoder 实例或只需要对一个子集进行编码列,您可以使用 ColumnTransformer:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import LabelEncoder

transformer = ColumnTransformer(
    transformers=[('labels', LabelEncoder(), ['column1', 'column2'])],
)

transformed_data = transformer.fit_transform(df)

通过使用 ColumnTransformer,您可以指定要编码的列并维护单独的 LabelEncoder 实例,从而在数据准备中提供更大的灵活性。

以上是如何在 Scikit-Learn 中跨多列执行标签编码?的详细内容。更多信息请关注PHP中文网其他相关文章!

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