当前位置: 首页 > news >正文

make_blobs函数

make_blobsscikit-learn 库中用于生成聚类(或分类)数据集的函数。它通常用于生成多个高斯分布的簇状数据,以便进行分类或聚类算法的测试和验证。make_blobs 非常灵活,可以控制簇的数量、样本数量、每个簇的标准差、中心点等参数。

函数原型

sklearn.datasets.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_samples=300 表示生成 300 个样本,或者 n_samples=[100, 200, 50] 分别为每个簇生成的样本数量。
  • n_features:每个样本的特征数(默认 2)。表示每个生成的样本有多少个特征(即维度)。

    • 例如:n_features=2 生成二维数据,可以在平面上画出;n_features=3 生成三维数据。
  • centers:簇的数量,或者簇的中心坐标。可以是整数,表示生成多少个簇,或者是一个数组,指定每个簇的中心点。

    • 例如:centers=3 会随机生成 3 个簇;centers=[[0,0], [1,1], [2,2]] 会在指定坐标上生成簇。
  • cluster_std:每个簇的标准差(默认 1.0),可以是单个浮点数(表示所有簇的标准差相同),也可以是列表,表示每个簇的标准差。

    • 例如:cluster_std=1.0 为所有簇生成的样本点离中心的标准差为 1.0;cluster_std=[1.0, 2.0, 0.5] 表示每个簇的离散程度不同。
  • center_box:中心点生成的范围(默认 (-10.0, 10.0))。用于生成随机簇中心的坐标范围。可以通过调整此参数来控制簇中心的范围。

  • shuffle:是否打乱生成的数据(默认 True)。在生成数据后,是否对数据进行随机排序。

  • random_state:随机数种子,用于确保每次生成的簇相同。可以是整数(指定种子),None(不设置种子,每次生成不同),或 np.random.RandomState 对象。

返回值

  • X:生成的样本数据(特征矩阵),形状为 (n_samples, n_features)
  • y:生成的样本标签(簇标签),形状为 (n_samples,)

示例

1. 生成简单的 2D 数据集
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt# 生成数据集
X, y = make_blobs(n_samples=300, centers=3, n_features=2, random_state=42)# 绘制生成的数据
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.show()

在这个示例中,make_blobs 生成了 300 个二维样本,分为 3 个簇。然后我们使用 Matplotlib 绘制数据集,不同簇以不同颜色显示。

2. 指定簇的中心和标准差
X, y = make_blobs(n_samples=300, centers=[[1, 1], [5, 5], [9, 9]], cluster_std=[0.5, 1.0, 2.0], random_state=42)plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.show()

在这个例子中,我们手动指定了 3 个簇的中心,分别为 [1, 1][5, 5][9, 9],同时指定了每个簇的标准差为 0.5、1.0 和 2.0。

3. 生成高维数据
X, y = make_blobs(n_samples=500, centers=4, n_features=3, random_state=42)print(X.shape)  # (500, 3)

在这个例子中,生成了 500 个样本,每个样本有 3 个特征(即三维数据)。生成的数据可以用于三维可视化或其他高维数据处理。

4. 用于分类和聚类

make_blobs 常常用于生成聚类或分类问题的数据集,尤其适合在初学者的实验和测试中使用。例如,可以用来测试 K-Means 算法、支持向量机(SVM)分类器等。

总结

  • make_blobs 是一个非常方便的工具,用于生成模拟的簇状数据。
  • 它允许我们控制簇的数量、中心、样本数量、标准差等,灵活生成各种聚类数据。
  • 在机器学习实验中,它常常用于测试聚类或分类算法。

http://www.mrgr.cn/news/57981.html

相关文章:

  • yolo目标检测和姿态识别和目标追踪
  • IO进程_day1
  • 【CSS in Depth 2 精译_054】8.2 CSS 层叠图层(cascade layer)的推荐组织方案
  • 使用原生HTML和css制作一个箭头步骤条
  • 深度学习 之 模型部署 使用Flask和PyTorch构建图像分类Web服务
  • 侯捷 | C++ | 内存管理 | 学习笔记(四):第四章节 loki::allocator
  • Django+Vue全栈开发旅游网项目首页
  • python实战(二)——房屋价格回归建模
  • 九、Linux实战案例:项目部署全流程深度解析
  • 【C++笔记】类和对象(下)
  • Java中的集合-Map和set(java数据结构)
  • 【SpringCloud】基础问题
  • 力扣每日一题3185. 构成整天的下标对数目 II
  • linux笔记(NFS服务)
  • WPF的UpdateSourceTrigger属性
  • Matlab|基于氢储能的热电联供型微电网优化调度方法
  • 全网最全文件格式详解:npy/npz/h5/hdf5/pkl/hdf/tfrecord/parquet/csv/txt/feather
  • 记录一次线上环境svchost.exe antimalware service executable 进程占用CPU过高问题
  • 如何轻松攻克Lua语法基础?教程在此(下篇)
  • 今日总结10.24
  • Flutter 状态管理框架Get
  • 最优阵列处理技术(七)-谱加权
  • 【ADC】FFT分析中的基本概念与相干采样
  • 20241024-LaTeX常用数学符号之希腊字母——Typora(2)
  • GISBox vs CesiumLab:哪款GIS工具更适合你的项目?
  • 基于Matlab 火焰识别技术