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

如何用sklearn的make_blobs生成400:50分布的不平衡样本数据?

生成不平衡样本的解决方案

嗨,这问题很好解决!make_blobs其实支持直接指定每个类别的样本数量,不用自己手动拆分数据。你只需要把n_samples参数从整数改成一个列表,列表里的每个元素对应每个中心的样本数就行。

具体代码修改

原来的代码是:

from sklearn.datasets.samples_generator import make_blobs
X, y = make_blobs(n_samples=450, centers=2, cluster_std=[10.0, 2], random_state=22, n_features=2)

现在改成这样,就能生成400个第一类样本(对应FeatureA)和50个第二类样本(对应FeatureB):

from sklearn.datasets.samples_generator import make_blobs
# 用列表指定每个类别的样本数:[第一类数量, 第二类数量]
X, y = make_blobs(n_samples=[400, 50], centers=2, cluster_std=[10.0, 2], random_state=22, n_features=2)

验证样本数量是否正确

你可以加一行代码确认类别分布:

import numpy as np
print(np.bincount(y))  # 输出应该是 [400 50]

原理说明

当n_samples是整数时,make_blobs会把总样本数均匀分配给每个centers;而当你传入一个和centers数量一致的列表时,它会严格按照列表里的数值为每个中心生成对应数量的样本,完美满足你要的不平衡特征需求。

另外提一句:如果你的scikit-learn版本比较新,samples_generator模块已经被整合到sklearn.datasets里了,所以导入语句可以改成:

from sklearn.datasets import make_blobs

两种导入方式都能工作,看你用的版本就行。

内容的提问来源于stack exchange,提问作者Ashish Agarwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:28:38