You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LabelEncoder中新增24个类别且保留原有标签?

给已有的LabelEncoder新增类别并保留原有标签编码

问题背景

加载了包含500个类别的LabelEncoder实例后,需要新增24个新类别,但LabelEncoder默认的fit方法会覆盖原有编码映射,因此需直接修改其核心属性实现需求。

实现步骤及代码

  1. 加载已有的LabelEncoder
import pickle
import numpy as np
from sklearn.preprocessing import LabelEncoder

# 加载保存的编码器
with open('../data/label_encoder_v500.pkl', 'rb') as file:
    label_encoder = pickle.load(file)
  1. 准备新增类别并去重
additional_classes = ['class501', 'class502', ..., 'class524']

# 过滤掉已存在的类别,避免重复映射
new_unique_classes = [cls for cls in additional_classes if cls not in label_encoder.classes_]
  1. 更新编码器的类别映射
    LabelEncoder的类别映射存储在classes_属性中,直接修改该属性即可保留原有编码,同时添加新类别:
# 合并原有类别与新增类别,保持原有顺序
updated_classes = list(label_encoder.classes_) + new_unique_classes

# 将列表转为numpy数组后赋值给classes_
label_encoder.classes_ = np.array(updated_classes)
  1. 验证与保存
# 验证原有类别编码不变
print(label_encoder.transform(['class1']))  # 输出原有编码(如0)
# 验证新增类别编码
print(label_encoder.transform(['class501']))  # 输出500(延续原有编码序列)

# 保存更新后的编码器
with open('../data/label_encoder_v524.pkl', 'wb') as file:
    pickle.dump(label_encoder, file)

关键说明

  • 直接修改classes_属性是安全的,这是LabelEncoder存储类别-编码映射的核心数组
  • 新增类别会被分配延续原有序列的编码(原有500个类别编码为0-499,新增的24个为500-523)
  • 必须过滤重复类别,否则会导致同一类别对应多个编码,引发逻辑错误

内容的提问来源于stack exchange,提问作者TkrA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 01:03:16