-1

x = 5 と y = 5 を中心として、0 < x < 10 となる x の範囲と 0 < y < 10 となる y の範囲内でクラスターを生成しようとしています。解決策が見つかりません。オンライン。誰でもこれで私を助けることができますか?以下は私がこれまでに得たものです

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 も同じです。この範囲を制御できるクラスターを生成できる必要があります。

4

1 に答える 1

0

make_blobsガウスクラスタを生成します。これらには有限の値の範囲はありません。いくつかの標準偏差を超える値はほとんどありませんが、不可能ではありません。値の範囲を保証したい場合は、代わりに一様分布を使用してください。

を使用centersして中心cluster_stdを制御し、標準偏差を制御できます。詳細については、のドキュメントを参照しmake_blobsてください。

または、アプリケーションで許可されている場合は、切り捨てられたガウス分布から効率的にサンプリングして、要求した範囲外の値を単純に捨てることができます。最後に、(何らかの理由で) サンプルを破棄することが有効なオプションでない場合は、実際に 2 つの均一な数をサンプリングできます。また、ガウス分布を得ることを主張する場合は、Box-Muller で 2 つの均一な数を 2D ガウスに変換できます (リンク: 0 と 1 の間の 2 つの均一な数: x1 と x2 から z1 と z2 を計算します)。

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

于 2015-03-20T00:37:55.393 に答える