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

多标签分类任务中如何手动实现Soft Voting软投票分类器

多标签分类场景Soft Voting软投票计算方法

多标签软投票的核心逻辑是对每个标签独立计算加权平均概率,再单独做阈值判断,不需要跨标签做概率归一化,和普通多分类软投票逻辑完全不同。


核心计算公式

对第$i$个标签$L_i$,最终加权平均概率的计算规则为:
$$P(L_i) = \frac{\sum_{k=1}^N w_k * p_{k,i}}{\sum_{k=1}^N w_k}$$
其中:

  • $N$是分类器总数量,本次场景中$N=3$
  • $w_k$是第$k$个分类器的权重,本次所有$w_k=1$,分母固定为3
  • $p_{k,i}$是第$k$个分类器对第$i$个标签的预测正类概率
    最后对每个$P(L_i)$做判断:$P(L_i) \geq 0.5$输出1,否则输出0

示例数据手动计算过程

原始预测数据整理如下:

分类器权重L1预测概率L2预测概率L3预测概率L4预测概率
分类器110.50.20.70.3
分类器210.30.40.20.6
分类器310.70.80.10.9

逐个标签计算:

  1. 标签L1
    加权平均概率 = (1×0.5 + 1×0.3 + 1×0.7)÷3 = 1.5÷3 = 0.5 ≥0.5 → 输出1
  2. 标签L2
    加权平均概率 = (1×0.2 + 1×0.4 + 1×0.8)÷3 = 1.4÷3 ≈0.467 <0.5 → 输出0
  3. 标签L3
    加权平均概率 = (1×0.7 + 1×0.2 + 1×0.1)÷3 = 1.0÷3 ≈0.333 <0.5 → 输出0
  4. 标签L4
    加权平均概率 = (1×0.3 + 1×0.6 + 1×0.9)÷3 = 1.8÷3 = 0.6 ≥0.5 → 输出1

最终输出结果

软投票最终的多标签预测结果为:[1, 0, 0, 1](对应L1到L4的输出)


极简代码实现(不依赖sklearn)

import numpy as np
# 输入3个分类器的预测结果,维度为(分类器数量, 标签数量)
clf_preds = np.array([
    [0.5, 0.2, 0.7, 0.3],
    [0.3, 0.4, 0.2, 0.6],
    [0.7, 0.8, 0.1, 0.9]
])
weights = np.array([1,1,1])
# 按标签维度计算加权平均
weighted_avg = np.average(clf_preds, axis=0, weights=weights)
# 阈值判断输出最终结果
result = (weighted_avg >= 0.5).astype(int)
print(result) # 输出 [1 0 0 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:45:03