假设我想要4个点集。每个簇可以在给定的x-y坐标集内。群集中的每个点都是随机生成的点。
这些集群将作为我的K-Means聚类问题的输入。 我如何使用Python做到这一点?
答案 0 :(得分:4)
这可能会给你一些想法:
from random import random
import math
def rand_cluster(n,c,r):
"""returns n random points in disk of radius r centered at c"""
x,y = c
points = []
for i in range(n):
theta = 2*math.pi*random()
s = r*random()
points.append((x+s*math.cos(theta), y+s*math.sin(theta)))
return points
此功能可以多种方式使用,例如:
def rand_clusters(k,n,r, a,b,c,d):
"""return k clusters of n points each in random disks of radius r
where the centers of the disk are chosen randomly in [a,b]x[c,d]"""
clusters = []
for _ in range(k):
x = a + (b-a)*random()
y = c + (d-c)*random()
clusters.extend(rand_cluster(n,(x,y),r))
return clusters
典型的全部看起来像
clusters = rand_clusters(4,50,0.3,0,1,0,1)
这将生成4个半径为0.3
的大小为50的簇,其中心在单位平方中随机选择。典型运行的要点:
答案 1 :(得分:0)
如果使用
生成数据min + (max - min) * random()
然后它们将介于最小和最大之间
对x和y以及每个群集执行此操作。