首页 > 解决方案 > 给定多个预测向量,如何有效地获得票数最多的标签(在 numpy/pytorch 中)?

问题描述

我有 3 个向量代表相同数据的 3 个不同标签预测:

P1=[31, 22, 11, 10,  9, 9, 0, 0, 23 ....]  # length over 1M
P2=[31, 22, 12, 10,  8, 9, 0, 0, 30 ....]  # length over 1M
P3=[30, 22, 12, 11,  8, 9, 0, 1, 31 ....]  # length over 1M

Ans= [31, 22, 12, 10, 8, 9, 0, 0, 23, ....]

基本思想是,如果预测具有最高的投票数(例如“31”在第一列中有 2 个),我们选择它,但是如果所有候选人都有不同的投票(例如“23”、“30”、“31 " 在最后一列),我们可以选择其中任何一个。

这些向量可能是 numpy 数组、列表或 pytorch 张量。考虑到这种向量的长度超过 1000,000,找到最有效的方法(主要是运行时)是Ans什么?

标签: pythonnumpymachine-learningpytorchensemble-learning

解决方案


使用scipy.mode

import numpy as np
from scipy.stats import mode

combined = np.array([P1, P2, P3])
majority_vote = mode(combined)[0]

推荐阅读