我正在尝试建立一个推理管道。它由两部分组成。使用往年的一些表格订单元数据进行每月ML模型训练,并使用当天的新订单进行每日推理预测。我想在模型中包括几个字符串分类列,我使用labelencoder将它们转换为整数。我想知道如何在数据预处理期间将每日推理数据集转换为相同的类别。是否应将labelencoder和映射的字典保存到推理数据集?谢谢。

最佳答案

通常,您会序列化LabelEncoder,例如like this。您也可以使用picklejoblib模块(我建议后者)。码:

import joblib

joblib.dump(label_encoder, 'label_encoder.joblib')
label_encoder = joblib.load('label_encoder.joblib')


由于您是在问字典,所以我想您可能会参考将LabelEncoder包装到字典中,这是我经常使用数据帧进行的操作。举个例子:

import pandas
from collections import defaultdict
from sklearn import preprocessing

df = pandas.DataFrame({
    'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'],
    'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'],
    'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego',
                 'New_York']
})

d = defaultdict(preprocessing.LabelEncoder)
fit = df.apply(lambda x: d[x.name].fit_transform(x))


fit现在保存编码数据。现在,我们可以使用以下方法反转编码:

fit.apply(lambda x: d[x.name].inverse_transform(x))


要序列化LabelEncoder的字典,您将遵循与单曲相同的路线:

joblib.dump(d, 'label_encoder_dict.joblib')

关于python - 是否有保存Labelencoder的字典以进行推断的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56158854/

10-12 17:14