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

Keras多分类模型预测标签映射错误,LabelEncoder使用问题排查

问题排查与解决方案

1. 输入预处理不一致(核心大概率原因)

你当前预测阶段调用prepare_free_text_inputs(data, data),如果该函数内部实现逻辑是对第一个输入参数拟合文本预处理器(如Tokenizer、TF-IDF转换器等),再对两个参数做转换,那么预测阶段仅用当前单样本拟合预处理器,得到的词表、转换规则和训练阶段用全量训练集拟合的结果完全不同,输入给模型的数据分布完全错误,自然会出现预测结果和预期不符的问题。
正确做法:训练阶段提前保存拟合完成的文本预处理器,预测阶段直接调用该预处理器的transform方法处理输入数据,不要重新做拟合操作。

2. 标签映射方式不规范

你现在使用np.unique(y_train)[class_index]做预测索引到标签的映射,虽然np.unique默认升序排序的逻辑和LabelEncoder的默认编码逻辑一致,但这种实现非常不严谨,一旦后续标签输入顺序、去重逻辑发生变化,就会出现索引和标签的映射错位。
正确做法:训练阶段保存拟合完成的LabelEncoder实例,预测阶段直接调用inverse_transform方法得到对应标签,不需要手动做映射。示例代码如下:

# 训练阶段保存LabelEncoder实例
le = LabelEncoder()
le.fit(y_train)
y_train_enc = le.transform(y_train)
y_test_enc = le.transform(y_test)

# 预测阶段直接反向转换
classes = np.argmax(res, axis=1)
pred_label = le.inverse_transform(classes)

3. 其他可排查点

  • 确认训练时输入数据的列顺序、所有特征处理逻辑和预测阶段完全一致,比如如果有数值特征的归一化/标准化操作,预测阶段要使用训练集统计得到的均值、标准差做转换,不能用单样本自身的统计值计算。
  • 你的模型测试准确率达到92%,说明模型本身的拟合效果是符合预期的,问题100%出在单样本预测的预处理流程和训练/测试阶段的预处理逻辑不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:45:02