2016-07-08 16 views
0

Ich habe einen Vektor von Datenpunkten, der eine 3D-Gauß-Verteilung oder eine Gauß-Verteilung zu repräsentieren scheint. Gibt es eine Möglichkeit, eine 3D-Gauss-Verteilung oder eine Gauß-Mischungsverteilung an diese Matrix anzupassen, und wenn ja, gibt es dafür Bibliotheken (z. B. in Python)?Gibt es eine Möglichkeit, eine 3D-Gauß-Verteilung oder eine Gauß-Mischungsverteilung an einen Vektor anzupassen?

Die Frage nach dem folgenden Zusammenhang scheint, aber ich mag einen 3D-Gaussian, um es passen: Fit multivariate gaussian distribution to a given dataset

Die gezielten Endergebnissen würden wie folgt aussehen (eine einzige Verteilung oder eine Mischung): enter image description here

Zum Beispiel sehr vereinfacht, meine Datenvektor (von dem das Gaußsche (Mischung) Verteilung gelernt werden sollte) sieht wie folgt aus:

[[0,0,0,0,0,0], [0,1,1,1,1,0], [0,1,2,2,1,0], [1,2,3,3,2,1], [0,1,2,2,1,0], [0,0,0,0,0,0]] 
+0

Sieht aus wie Sie etwas vom Typ Z wollen = gaussian1 (x, y) + gaussian2 (x, y) usw.? Weil das sind nur regelmäßige 2d Gaussiane dann ... – VBB

+0

Ich denke schon, aber ich möchte diese Funktionen aus den Daten lernen (d. H. Eine Matrix, die diese Verteilung darstellt). – MaVe

+0

Also haben Sie (x, y, z) Sätze, die Punkte auf diesen Ebenen definieren? Oder sind diese Plots eine Hülle der Daten? – VBB

Antwort

0

Ich kann eine Antwort geben, wenn Sie die Anzahl der Gaussianer kennen. Ihr Vektor gibt die Z-Werte in einem Raster von X- und Y-Punkten an. Sie können X- und Y-Vektoren machen:

import numpy as np 
num_x, num_y = np.shape(z) 
xx = np.outer(np.ones(num_x), np.arange(num_y)) 
yy = np.outer(np.arange(num_x), np.ones(num_y)) 

Dann jede Routine Anpassungsprozedur folgen, zum Beispiel 2D Gaussian Fit for intensities at certain coordinates in Python.