Python -采样不平衡数据集



我有一个有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的一小部分。请建议。

如果我没理解错的话:

# 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")]
)

最新更新