Python:sklearn为数据点生成在指定范围内的集群

Python:sklearn为数据点生成在指定范围内的集群,python,cluster-analysis,data-generation,Python,Cluster Analysis,Data Generation,我试图在x的范围内生成一个簇,使得0

我试图在x的范围内生成一个簇,使得0
import numpy as np
from sklearn.datasets.samples_generator import make_blobs
from pylab import *

    centers = [[5, 5]]
    X, labels_true = make_blobs(n_samples=100, centers=centers, cluster_std=0.5, random_state=0)
    print X

Example of Output:
 [ 5.07747371  5.18908126]
 [ 4.6781908   3.88829842]
 [ 5.03325861  5.15123595]
 [ 4.44780833  5.02608254]
 [ 4.77223375  5.00873958]
 [ 5.76638961  5.73467938]
 [ 5.08871307  4.79910953]
 [ 4.68207696  5.33821665]
 [ 5.58938979  4.91003758]

正如您所看到的,输出值x的范围为4到6,y的范围相同。我需要能够生成可以控制此范围的簇。

make_blobs
生成高斯簇。它们没有有限的值范围。超出几个标准偏差的值不太可能,但并非不可能。如果要保证值的范围,请改用均匀分布

您可以使用
中心
控制中心,使用
聚类_std
控制标准偏差。有关详细信息,请参阅
make_blobs
的文档

或者,如果您的应用程序允许,您可以简单地从截断的高斯分布中丢弃超出有效采样范围的值。最后,如果丢弃样本(无论出于何种原因)不是一个有效的选项,那么您确实可以对两个统一的数字进行采样。如果你坚持要得到高斯分布,你可以用Box-Muller将两个均匀数转换成二维高斯分布(在链接中:从0到1之间的两个均匀数计算z1和z2:x1和x2):