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中文网其他相关文章!