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

如何对DataFrame中的多数类进行40%比例的随机欠采样?

多数类随机欠采样(按比例移除样本)

针对你的需求,不需要强制平衡到1:1比例,直接按指定比例保留多数类样本即可,用Pandas就能轻松实现,步骤如下:

    1. 分离少数类与多数类样本
      先把DataFrame里的两类数据拆分出来,假设你的目标类别列名为target,多数类是类别1:
import pandas as pd

# 读取CSV为DataFrame(如果还没完成这一步)
df = pd.read_csv('your_dataset.csv')

# 拆分两类样本
minority = df[df['target'] == 0]
majority = df[df['target'] == 1]
    1. 按比例采样多数类
      如果你想移除30%的多数类样本,就保留70%;移除40%则保留60%。用sample()方法指定保留比例即可:
# 设置保留比例:移除30%则设为0.7,移除40%设为0.6
keep_ratio = 0.7
# random_state用于固定采样结果,保证可复现,可根据需求调整或删除
sampled_majority = majority.sample(frac=keep_ratio, random_state=42)
    1. 合并得到最终数据集
      把采样后的多数类和少数类合并,重置索引避免混乱:
undersampled_df = pd.concat([minority, sampled_majority], axis=0).reset_index(drop=True)
  • 验证采样结果
    可以查看新数据集的类别分布,确认是否符合预期:
print(undersampled_df['target'].value_counts())

这种方法完全按照你要求的比例移除多数类样本,不需要调整到严格的1:1平衡状态,灵活适配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:09:27