sklearn管道中的持久标签编码



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

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

如果是

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

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

遇到了同样的问题,并能够找到一个工作,如果我们可以保存编码器实例信息,我们可以重用它来产生预期的输出。下面的链接有详细的答案:在多个程序中正确使用Scikit's LabelEncoder

对于更通用的方法,这里有一个分别用于fit和transform的自定义函数,

  • fit函数获取训练数据帧,分类列列表返回标签编码器类的字典。
  • 在推断时pickle并加载字典。
  • 转换函数获取推理数据帧、分类列列表和编码器字典pickle路径,并返回标签编码的数据帧。

有关功能代码和工作示例,请参阅此处,

来源:链接

似乎已经处理了单列情况下使用相同的标签编码器来测试数据集?还是新的标签编码器?

所以我使用了前面提到的多列解决方案,应该工作得很好。

相关内容

  • 没有找到相关文章

最新更新