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

多标签文本分类中如何获取所有预测标签名称?

解决多标签文本分类的预测标签获取问题

你用np.argmax()的方式只适合单标签分类任务——它会直接取概率最高的单个标签,这和多标签任务的需求不符。多标签任务中每个标签是独立的二分类问题,模型输出的是每个标签的预测概率(通常用sigmoid激活),你需要通过设定阈值来筛选所有符合条件的标签。

修改后的代码示例

import numpy as np
from keras.models import load_model

model = load_model('/cnn.h5')

CATEGORIES=['070.32', '070.33', '070.54', '155.0', '197.7', '271.0', '271.8',
       '275.1', '277.4', '289.81', '401.9', '452', '453.0', '511.89',
       '553.1', '567.23', '571.2', '571.42', '571.5', '571.6', '571.8',
       '572.2', '572.3', '572.4', '576.1', '578.9', '728.3', '751.61',
       '780.97', '782.3', '782.4', '786.3', '789.5', 'V70.8']

# 获取单个样本的所有标签预测概率
pred_probs = model.predict(x_test)[0]
# 设定概率阈值(可根据任务调整,比如0.5)
threshold = 0.5
# 筛选概率超过阈值的标签索引
selected_idx = np.where(pred_probs > threshold)[0]
# 映射为对应的标签名称
Labels = [CATEGORIES[idx] for idx in selected_idx]

print(Labels)

关键注意事项

  1. 模型结构验证:确保训练时模型输出层用的是sigmoid激活函数,损失函数用binary_crossentropy——这是多标签任务的标准配置。如果之前用了softmax+categorical_crossentropy,模型本质是按单标签训练的,需要重新调整结构后再训练。
  2. 阈值调整:阈值0.5是通用值,你可以根据验证集的精确率、召回率需求,调整到更适合业务场景的数值(比如0.3或0.7)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:27:28