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