欢迎访问宙启技术站
智能推送

Python中随机生成平衡和不平衡的make_blobs()数据

发布时间:2023-12-11 12:05:51

make_blobs()是Python中的一个函数,可以用于随机生成指定数量的样本数据集。这个函数非常适合用于机器学习任务中的数据预处理和模型评估。

make_blobs()函数的调用格式如下:

make_blobs(n_samples=100, n_features=2, centers=None, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None)

其中,常用的参数如下:

- n_samples:生成的样本数量,默认值为100。

- n_features:生成的每个样本的特征数量,默认值为2。

- centers:表示生成的样本的中心点,默认情况下生成2个中心点,如果想要生成多个中心点,可以传入一个整数值或一个数组。

- cluster_std:表示每个样本的标准差,默认值为1.0。

- center_box:表示生成中心点的边界,默认为(-10.0, 10.0)。

- shuffle:表示是否打乱样本的顺序,默认为True。

- random_state:表示随机数生成器的种子值,默认为None。

下面是一个生成平衡数据集的例子:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

# 生成平衡的数据集
X, y = make_blobs(n_samples=100, centers=2, cluster_std=1.0, center_box=(-10.0, 10.0), random_state=0)

# 绘制散点图
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

这段代码使用make_blobs()函数生成了一个包含100个样本的平衡数据集。数据集包含2个中心点,在坐标系中显示为蓝色和黄色的点,它们通过直线划分,不同的颜色代表不同的类别。

除了生成平衡数据集,我们也可以生成不平衡的数据集。例如,我们可以生成包含3个中心点的数据集,其中2个中心点的样本数量较多,1个中心点的样本数量较少。

# 生成不平衡的数据集
X, y = make_blobs(n_samples=[900, 900, 100], centers=None, cluster_std=1.0, center_box=(-10.0, 10.0), random_state=0)

# 绘制散点图
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

这段代码中,make_blobs()函数的n_samples参数传入了一个列表,列表中的每个值表示对应类别的样本数量。生成的数据集包含3个中心点,2个中心点的样本数量为900,另一个中心点的样本数量为100。数据集在坐标系中显示为蓝色、黄色和红色的点,样本数量较少的红色中心点在数据集中明显地占据了较小的区域。

通过make_blobs()函数,我们可以生成平衡和不平衡的样本数据集,以满足不同的数据分析和机器学习任务的需求。这个函数的灵活性使其成为数据生成与模型评估的重要工具。