这段代码定义了一个名为'create_dataset'的函数,用于生成包含'n'个样本的数据集。每个样本拥有'd'个特征值,数据集包含'k'个簇。每个簇的中心点由随机生成,而每个样本的特征值则由其所属簇的中心加上一个服从高斯分布的随机数得到。该函数返回生成的样本数据'x'和所有簇的中心点'centers'。

该函数的代码如下:

def create_dataset(n, d=3, k=5, var=0.03):
    rng = default_rng()
    centers = rng.random(k * d).reshape((k, d))   # 生成簇中心
    nk = int(n / k)  # 计算每个簇的样本数
    x = np.tile(centers, (nk, 1)) # 把每个簇中心重复nk次,初始化样本特征值为各簇的中心
    x += rng.normal(scale=var, size=nk * k * d).reshape((nk * k, d))  # 给每个样本的每个特征值加上一个随机数
    return x, centers

函数参数:

  • 'n': 数据集中的样本数量
  • 'd': 每个样本的特征数量
  • 'k': 簇的数量
  • 'var': 随机噪声的方差

函数返回值:

  • 'x': 生成的样本数据,形状为 (n, d)
  • 'centers': 各个簇的中心点,形状为 (k, d)

函数实现步骤:

  1. **生成簇中心:**使用'rng.random(k * d).reshape((k, d))'生成随机数,并将其重塑为形状为(k, d)的数组,表示k个簇的中心点坐标。
  2. **计算每个簇的样本数:**使用'int(n / k)'计算每个簇包含的样本数量。
  3. **初始化样本特征值:**使用'np.tile(centers, (nk, 1))'将每个簇的中心点重复'nk'次,生成初始样本特征值,每个样本的特征值都与其所属簇的中心点相同。
  4. **添加随机噪声:**使用'rng.normal(scale=var, size=nk * k * d).reshape((nk * k, d))'生成服从高斯分布的随机数,并将其添加到每个样本的特征值上,模拟数据点的随机分布。
  5. **返回结果:**将生成的样本数据'x'和簇中心点'centers'作为返回值。

该函数可以用于生成包含多个簇的模拟数据集,以便用于机器学习模型的训练和评估。

Python代码:生成多簇数据集的函数 create_dataset

原文地址: https://www.cveoy.top/t/topic/oN1k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录