sklearn管道中的持久标签编码

3
如何将同一字符串持续编码到同一列中? 在scikit-learn中跨多个列进行标签编码提出了一种处理具有多个分类值的数据框的好方法。但是,我不确定它是否正确地持久化(在pickle中)并且会针对新输入的数据应用相同的标签。
到目前为止,我直接使用pandas,并通过类别值的 .cat.codes 获得标签。但现在我需要将标签编码集成到管道中,以处理新输入的数据。
是否可以像这样:
le = LabelEncoder()
for col in df.select_dtypes([], ['object'].columns:
    df[col] = le.fit_transform(df[col])

或者 MultiColumnLabelEncoder 提出的解决方案是否足以满足我的任务要求?
3个回答

1
我遇到了相同的问题,并且找到了一个解决方法,如果我们可以保存编码器实例信息,那么我们可以重复使用它来生成预期的输出。以下链接详细解答了这个问题:正确地在多个程序中使用Scikit的LabelEncoder


0

为了更通用的方法,这里提供了一个自定义函数来分别进行拟合和转换。

  • 拟合函数获取训练数据框和分类列列表,并返回标签编码器类的字典。
  • 该字典被序列化并在推断时加载。
  • 转换函数获取推断数据框、分类列列表和编码器字典序列化路径,并返回标签编码后的数据框。

有关函数代码和工作示例,请参见此处,

来源:链接


-1

这个答案意味着你需要在推理时将整个数据框加载到内存中。远非理想。 - marbel
@marbel 我明白。你有什么解决方案建议? - Georg Heiler
只是留在这里作为参考,我已经在这里回答了这个问题(https://dev59.com/9FkS5IYBdhLWcg3wJDUP) - marbel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接