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

基于列最小value_count()多类别下采样,求通用高效实现方案

通用类别下采样至最小样本量的实现方案

针对类别不平衡数据集,将所有类别样本量统一下采样至最小类别样本数的需求,以下是更通用、高效的实现方案,替代硬编码的手动拆分方式:

步骤1:确定最小样本量

首先获取各类别的样本计数,提取最小样本数:

import pandas as pd
from sklearn.utils import resample

# 获取各类别样本量
class_counts = wisdm["activity"].value_counts()
# 提取最小样本数
min_sample_count = class_counts.min()

步骤2:通用下采样实现

利用groupby分组+apply批量处理所有类别,无需手动枚举每个类别:

# 批量下采样每个类别至最小样本量
balanced_dataset = wisdm.groupby("activity", group_keys=False).apply(
    lambda group: resample(
        group,
        replace=False,  # 下采样用无放回采样,若需有放回可改为True
        n_samples=min_sample_count,
        random_state=42  # 固定随机种子保证结果可复现
    )
)

验证结果

查看处理后的类别分布,确认所有类别样本量一致:

print(balanced_dataset["activity"].value_counts())

方案优势

  • 通用性强:无论数据集有多少类别,无需修改代码即可适配,新增/删除类别时自动生效
  • 代码简洁:避免重复的类别拆分与合并代码,降低维护成本
  • 可复现性:通过random_state固定随机采样过程,结果稳定

补充说明

  • 若需要重置索引,可在resample后添加.reset_index(drop=True)
  • replace=False是下采样的常规设置,仅当目标样本数大于当前类别样本量时(非当前场景)才需要设置replace=True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:20:28