【问题标题】:persistent label encoding in sklearn pipelinesklearn 管道中的持久标签编码
【发布时间】:2017-03-10 03:44:50
【问题描述】:

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

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

想要什么

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

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

【问题讨论】:

    标签: python pandas encoding scikit-learn pipeline


    【解决方案1】:

    似乎已经处理了单列情况Usng same Label Encoder to test dataset? or new Label Encoder?

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

    【讨论】:

    • 这个答案意味着您需要在推理时将整个数据帧保存在内存中。远非理想。
    • @marbel 我明白了。你会提出什么解决方案?
    • 只是留在这里作为参考,我已经回答了问题here
    【解决方案2】:

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

    【解决方案3】:

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

    • fit 函数获取训练 DataFrame,分类列列表返回标签编码器类的字典。
    • Dict 在推理时被腌制和加载。
    • transform 函数获取 Inference DataFrame、分类列列表和编码器 Dict pickle 路径,并返回标签编码的 DataFrame。

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

    来源:Link

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2021-12-18
      • 2017-02-27
      • 2011-12-29
      • 1970-01-01
      • 2018-04-12
      • 2021-10-11
      • 2018-08-02
      • 2020-03-18
      相关资源
      最近更新 更多