首页 > 解决方案 > 为 K 均值聚类生成随机 (x,y) 点

问题描述

我正在尝试为python中的图形随机生成一堆点来测试k-means聚类算法。这是我的代码。

N = 100
random_x0 = np.random.randn(N) + (np.random.randint(0,100) * np.random.randint(1,4))
random_x1 = np.random.randn(N) + (np.random.randint(0,100) * np.random.randint(1,4))
random_x2 = np.random.randn(N) + (np.random.randint(0,100) * np.random.randint(1,4))
random_y0 = np.random.randn(N) + (np.random.randint(0,100) * np.random.randint(1,4))
random_y1 = np.random.randn(N) + (np.random.randint(0,100) * np.random.randint(1,4))
random_y2 = np.random.randn(N) + (np.random.randint(0,100) * np.random.randint(1,4))

正如您可能想象的那样,每组random_x[index]坐标都与其对应的 y 坐标相匹配。

(random_x0, random_y0), (random_x1, random_y1), (random_x2, random_y2)

预期结果分布的图像

由于我正在测试一个聚类算法,我希望我的数据点有一些聚类……但这似乎太多了。我尝试添加一个 1-100 的随机数,然后将其乘以 1-4 的一个随机数……我做错了什么才能获得如此一致的随机结果?

标签: pythonrandomcoordinatescluster-analysisk-means

解决方案


randn是一个均值为零且方差等于 1 的随机高斯变量。为了生成具有均值m和标准差的高斯变量,s可以这样做m + s*randn()。既然你这样做randn(N) + constant了,你基本上会创建标准差为 1 且均值等于 的高斯变量constant。现在constant由一个可以在 0 到 297 之间变化的随机变量给出,即质心的散布比方差大得多。您可能想要一个有几个标准偏差的质心(即平均值)分布。您还可以传递多个均值和 std.dev。值random.normal例如:

np.random.normal(loc=[0, 1, 2], scale=[0.5, 0.75, 1.0], size=(N, 3))

推荐阅读