“从三个栏目选一个”和“给文章添加多个主题标签”是两种任务。若标签允许同时成立,只保留最高分会丢掉其余有效标签;设计输出格式之前,应先写清一条样本允许几个答案。

先让业务规则决定答案形状
例如一篇讲Python清洗模型训练数据的文章,可以同时标注“编程”和“AI”。若网站另有“主栏目”字段,它仍可只选一个。把主栏目与主题标签混在同一列里,会让训练标注、模型输出和后台展示彼此冲突。
| 任务 | 一条样本的答案 | 本站自拟例子 |
|---|---|---|
| 单标签多分类 | 从候选类别选择一个 | 主栏目:编程开发 |
| 多标签分类 | 可选择零个、一个或多个 | 主题:编程、AI |
固定标签顺序,才能比较两个矩阵
scikit-learn文档用每行一个样本、每列一个类别的二元矩阵表示多标签目标。下面只是手写编码练习,不训练模型。列顺序由labels统一定义,不能让不同批次按集合遍历顺序各排各的。
labels = ("编程", "AI", "安全")
annotations = [{"编程", "AI"}, {"安全"}, set()]
matrix = [[int(label in chosen) for label in labels] for chosen in annotations]
assert matrix == [[1, 1, 0], [0, 0, 1], [0, 0, 0]]
scores = {"编程": 0.82, "AI": 0.76, "安全": 0.18}
chosen = {label for label in labels if scores[label] >= 0.7}
assert chosen == {"编程", "AI"}
assert max(scores, key=scores.get) == "编程"
print(matrix, sorted(chosen))
阈值只是示例,不是通用最佳值
0.7是为演示“保留多个标签”手动选取的规则。这里的分数是假设输入,不是模型实测概率,更不能由示例推断它们经过校准。真实系统应先明确误贴标签与漏贴标签的成本,再用独立验证集选择规则。
输出之后仍要验收业务约束
可以检查是否出现词表外标签、是否漏掉空结果的处理,以及展示层是否把多项拼成一项字符串。若业务规定某两个标签不能共存,要显式验证这种规则。与其事后强取一个最高分,不如在任务定义阶段就确定是单选还是多选。
资料来源与继续学习
资料查阅日期:2026年10月14日。示例、阅读练习与操作建议由本站整理。
资料查阅与编辑日期:2026年10月14日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







