在保存LabelEncoders时,使用字典或列表存储每个LabelEncoder及其对应的类别信息。示例代码:
from sklearn.preprocessing import LabelEncoder
import pickle
# 创建多个LabelEncoder实例
encoder_1 = LabelEncoder()
encoder_2 = LabelEncoder()
# 分别对不同的类别进行编码
classes_1 = ['A', 'B', 'C']
classes_2 = ['X', 'Y', 'Z']
encoder_1.fit(classes_1)
encoder_2.fit(classes_2)
# 保存LabelEncoder及其对应的类别信息
encoders = {'encoder_1': {'encoder': encoder_1, 'classes': classes_1},
'encoder_2': {'encoder': encoder_2, 'classes': classes_2}}
with open('label_encoders.pkl', 'wb') as f:
pickle.dump(encoders, f)
# 加载保存的LabelEncoders并使用
with open('label_encoders.pkl', 'rb') as f:
saved_encoders = pickle.load(f)
encoder_1 = saved_encoders['encoder_1']['encoder']
classes_1 = saved_encoders['encoder_1']['classes']
encoder_2 = saved_encoders['encoder_2']['encoder']
classes_2 = saved_encoders['encoder_2']['classes']
print(encoder_1.classes_)
print(encoder_2.classes_)
输出结果为:
['A' 'B' 'C']
['X' 'Y' 'Z']
这样保存后,就可以避免类别信息被覆盖的问题了。