2016-09-24 10 views
2

私は、3つの異なる多変量ガウス分布から100サンプルを返す関数を実装しようとしています。異なる確率で異なる分布からのpythonサンプリング

numpyは、sinle多変量ガウスからサンプリングする方法を提供します。しかし、異なるサンプリング確率で3つの異なる多変量からサンプルする方法を見つけることができませんでした。

私の要件は

G_1 mean = [1,1] cov =[ [ 5, 1] [1,5]] 
G_2 mean = [0,0] cov =[ [ 5, 1] [1,5]] 
G_3 mean = [-1,-1] cov =[ [ 5, 1] [1,5]] 

任意のアイデア下記として平均および共分散の確率$ [0.7、0.2、0.1]で三個の多変量ガウス分布から$をサンプリングすることですか?

答えて

3

はあなたの発電機の配列を作成言ってやるがいい。

generators = [ 
    np.random.multivariate_normal([1, 1], [[5, 1], [1, 5]]),    
    np.random.multivariate_normal([0, 0], [[5, 1], [1, 5]]), 
    np.random.multivariate_normal([-1, -1], [[5, 1], [1, 5]])] 

np.random.choiceは加重サンプリングをサポートしていますので、今、あなたは、発電指数の重み付けランダムに作成することができます。

draw = np.random.choice([0, 1, 2], 100, p=[0.7, 0.2, 0.1]) 

drawは長さ - です100個のエントリのアレイであり、それぞれ{0,1,2}から確率,0.7,0.2,0.1となる。

サンプルを生成するだけです。

[generators[i] for i in draw] 
関連する問題