sklearn 管道中的持久标签编码

persistent label encoding in sklearn pipeline

如何将相同的字符串持久编码到同一列? Label encoding across multiple columns in scikit-learn 提出了一种处理具有多个分类值的数据框的好方法。但是,我不确定这是否正确地持续存在(在 pickle 中)并且会再次为新传入的数据应用相同的标签。

到目前为止我直接使用pandas并通过类别值的.cat.codes获得标签。但是现在我需要将标签编码集成到管道中以处理新的传入数据。

想要

le = LabelEncoder()
for col in df.select_dtypes([], ['object'].columns:
    df[col] = le.fit_transform(df[col])

或者 MultiColumnLabelEncoder 的建议解决方案是否足以完成我的任务?

似乎已经处理了单列情况

所以我使用了前面提到的多列解决方案,效果很好。

遇到了同样的问题并且能够找到解决方法,如果我们可以保存编码器实例信息,我们可以重新使用它来产生预期的输出。 下面link有详细的解答: Using Scikit's LabelEncoder correctly across multiple programs

对于更通用的方法,here 是一个分别用于拟合和变换的自定义函数,

  • 拟合函数得到训练DataFrame和分类列列表returns标签编码器的字典类。
  • Dict 在推理时被腌制和加载。
  • 转换函数获取推理 DataFrame、分类列列表和编码器 Dict pickle 路径以及 returns 标签编码 DataFrame。

功能代码和工作示例请参考这里,

来源:Link