pandas Python -对不平衡数据集采样

e0bqpujr  于 2022-11-20  发布在  Python
关注(0)|答案(1)|浏览(152)

我有一个包含3个类的数据集,下面是value_counts()。

Class 0 - 2000
Class 1 - 10000
Class 2 - 10000

我想用下面的分布对这个数据集进行抽样。

Class 0 - 2000 (i.e., all rows from Class 0)
Class 1 - 4000 (i.e., twice as many rows as Class 0)
Class 2 - 4000 (i.e., twice as many rows as Class 0)

使用权重的随机抽样仅检索0类的一小部分。请提供建议。

xxhby3vn

xxhby3vn1#

如果我没理解错的话:

# Create sample data
df = pd.DataFrame({"class": np.repeat([0, 1, 2], [2_000, 10_000, 10_000])})

# The distribution matrix
distribution = {0: 2000, 1: 4000, 2: 4000}

# Take samples based on the distribution matrix
sample = pd.concat(
    [group.sample(distribution[class_]) for class_, group in df.groupby("class")]
)

相关问题