2015-03-19 3 views
-1

Je suis en train de générer un cluster dans la plage de x tel que 0 < x < 10 et la portée de y tels que 0 < y < 10 avec le centre x = 5 et y = 5. Je ne trouve aucune solution en ligne. Est-ce que quelqu'un peut m'aider avec ça. Voici ce que je suis arrivé jusqu'à présentPython: sklearn générer des clusters avec dans une plage spécifiée pour points de données

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] 

Comme vous pouvez le voir, les valeurs de sortie ont x variant de 4 à 6 et même pour y. Je dois être capable de générer des clusters où je peux contrôler cette plage.

Répondre

0

make_blobs génère Gaussian clusters. Ces et non ont une plage de valeurs finie. Des valeurs en dehors de quelques écarts-types sont peu probables, mais pas impossibles. Si vous voulez garantir la plage de valeurs, utilisez plutôt une distribution uniforme.

Vous pouvez utiliser centers pour contrôler les centres et cluster_std pour contrôler les écarts-types. Voir la documentation de make_blobs pour plus de détails. Alternativement, si votre application le permet, vous pouvez simplement jeter des valeurs en dehors de la plage que vous demandez effectivement l'échantillonnage à partir d'un gaussien tronqué. Enfin, si ce n'est pas une option valide pour jeter des échantillons (pour une raison quelconque), vous pouvez en effet échantillonner deux nombres uniformes. Et si vous insistez pour obtenir une distribution gaussienne, Box-Muller transforme les deux nombres uniformes en un Gaussien 2D (dans le lien: calculez z1 et z2 à partir de deux nombres uniformes entre 0 et 1: x1 et x2):

http://mathworld.wolfram.com/Box-MullerTransformation.html