如何在x-y平面的给定(x,y)坐标内生成一组随机点?

时间:2017-06-04 16:08:12

标签: python random machine-learning cluster-analysis

假设我想要4个点集。每个簇可以在给定的x-y坐标集内。群集中的每个点都是随机生成的点。

这些集群将作为我的K-Means聚类问题的输入。 我如何使用Python做到这一点?

2 个答案:

答案 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的簇,其中心在单位平方中随机选择。典型运行的要点:

enter image description here

答案 1 :(得分:0)

如果使用

生成数据
min + (max - min) * random()

然后它们将介于最小和最大之间

对x和y以及每个群集执行此操作。