python - 给定多个预测向量,如何有效地获得票数最多的标签(在 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
什么?
解决方案
使用scipy.mode
:
import numpy as np
from scipy.stats import mode
combined = np.array([P1, P2, P3])
majority_vote = mode(combined)[0]
推荐阅读
- android - 如何在 startDestination 片段上加载 viewModel
- python - 绘制 3D 图形时出现问题,错误无法重塑数组,无法将大小为 712 的数组重塑为形状 (712,3)
- python - python memoization的奇怪行为
- javascript - 如何从 JavaScript 的段落元素中复制文本?
- python - 缓慢的数据库访问(FastAPI + Firebase)
- javascript - 在特定位置添加新项目,但无法删除该位置的旧项目
- java - 如何在java中的折线图中添加系列标签?
- elasticsearch - Elasticsearch 按术语聚合过滤
- tensorflow - 在图片中找到汽车牌照以在 CPU 上计算的正确网络架构是什么
- node.js - 使用 nginx 连接 404 对 MERN 进行 Dockerizing