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

如何用Python从100个one-hot标签中选取最常见的单一标签

从100个One-Hot标签中提取出现次数最多的标签

没问题,我来帮你解决这个标签压缩的问题——要把形状为(100,6)的one-hot标签数组压缩成(1,6)的单个标签,核心就是找出出现频次最高的那个one-hot向量,用NumPy就能轻松实现,具体步骤和代码如下:

实现思路

  1. 转换类别索引:先把每个one-hot向量转换成对应的类别编号(比如[0,0,0,0,0,1]对应编号5),这样统计频次更方便;
  2. 统计最高频次类别:计算每个类别出现的次数,找出次数最多的那个类别编号;
  3. 转回One-Hot格式:把最高频次的类别编号重新转换成one-hot编码,调整成(1,6)的形状。

完整代码(基于NumPy)

import numpy as np

# 假设你的标签数组是labels,对应你提供的(100,6)数据
labels = np.array([
    [0,0,0,0,0,1], [0,0,0,0,0,1], [0,0,1,0,0,0],
    [0,1,0,0,0,0],  # 其他样本省略...
], dtype=int8)

# 步骤1:将one-hot标签转换为类别索引(0-5的整数)
class_indices = np.argmax(labels, axis=1)

# 步骤2:找出出现次数最多的类别编号
most_common_class = np.bincount(class_indices).argmax()

# 步骤3:将类别编号转回one-hot编码,并调整为(1,6)形状
compressed_label = np.eye(6)[most_common_class].reshape(1, 6)

# 输出结果
print(compressed_label)

代码细节解释

  • np.argmax(labels, axis=1):沿着每个样本的维度(axis=1)取最大值的索引,把每个6维的one-hot向量简化成一个0到5之间的整数,方便后续统计;
  • np.bincount(class_indices).argmax():bincount会统计每个整数类别出现的次数,返回的数组索引对应类别编号,值对应次数;argmax则直接找出次数最多的类别编号;
  • np.eye(6)[most_common_class]:生成一个6×6的单位矩阵,取对应类别的行就是该类别的one-hot编码,最后用reshape(1,6)把它转换成你需要的(1,6)形状。

针对你的示例数据验证

你提供的标签数组里,[0,0,0,0,0,1](对应类别5)出现的次数最多,所以运行代码后得到的compressed_label会是[[0 0 0 0 0 1]],完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:35:53