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

如何统计分类器预测1的次数并通过多数投票获取预测标签

实现方案

首先你的原始预测嵌套列表如下,注意实际编码时不建议用List作为变量名,会覆盖Python内置的列表类型,下文统一用preds指代该数据集:

preds = [[0,1,1,0],[1,1,1,0],[0,0,1,1]]

1. 统计指定实例预测为1的总次数

嵌套列表中每个子列表对应当前分类器对所有实例的预测结果,相同索引位置代表同一个实例的预测值。统计指定索引位置的1的次数,直接遍历所有分类器的对应位置求和即可,因为标签是0/1数值,求和结果就是1的出现次数。

示例:统计索引为1的第二个实例的1的预测次数

instance_index = 1
count_1 = sum(clf_pred[instance_index] for clf_pred in preds)
print(count_1) 
# 输出:2,对应三个分类器在该位置的预测值为1、1、0,求和结果即为1的计数

如果需要一次性获取所有实例的1的预测次数,可以用zip(*preds)将列表转置,按位置分组后批量求和:

all_instance_count1 = [sum(pos_predictions) for pos_predictions in zip(*preds)]
print(all_instance_count1)
# 输出:[1, 2, 3, 1],依次对应4个实例被预测为1的总次数

2. 多数投票生成最终预测列表

你需要的结果是每个位置取获得半数以上分类器支持的标签,属于最基础的硬投票逻辑。因为总共有3个分类器,只要某个位置1的计数≥2(超过半数)就取1,否则取0即可,基于上一步得到的各位置1的计数,直接做阈值判断就能得到结果:

clf_total = len(preds)
# 多数阈值为分类器总数的半数以上,3个分类器对应阈值为2
majority_thresh = clf_total // 2 + 1
final_result = [1 if cnt >= majority_thresh else 0 for cnt in all_instance_count1]
print(final_result)
# 输出:[0, 1, 1, 0],和你预期的List1完全一致

补充说明:如果分类器总数为偶数出现平票情况,可以根据业务需求调整平票时的取值规则,比如平票默认取1、取0或者引入额外判定逻辑,上述代码默认平票场景取0。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:01:14