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