Ich versuche, Zellen in Populationen zu klassifizieren. Wenn ich benutze:sklearn GMM Klassifizierung Vorhersage (Komponentenzuordnung) Auftrag
gmix = mixture.GMM(n_components=3, covariance_type='full') gmix.fit(samples)
Das bedeutet Ausgang, aus dem Code unten, Änderungen in Ordnung, wenn ich nicht gesetzt: np.radom.seed(0)
.
print ("gmix.means \n", gmix.means_) colors = ['r' if i==0 else ('g' if i==1 else ('b' if i ==2 else 'm'))for i in gmix.predict(samples)]
Ich mag die von der X sortierten Klassen Achse bedeutet (erstes Element jeder Klasse) zB:
[[ 3.25492404e+02 2.88403293e-02]
[ 3.73942908e+02 3.25283512e-02]
[ 5.92577646e+02 4.40595768e-02]]
So in dem obigen Code rot immer 325 sein würde, grün 372 und blue 592. Im Moment glaube ich nicht, dass irgendetwas den Output sortiert.
Ich habe versucht:
gmix.means_ = np.sort(gmix.means_, axis = 0)
Aber dann die gmix.covars_ und gmix.weights_ müssen auch entsprechend sortiert werden, was ist, wo ich bin stecken!
Vielen Dank!
bearbeitet 4/5/16:
Danke für die Hilfe und Lenkung mich in der richtigen Richtung. Hier ist meine schlecht geschriebene, aber funktionierende Version:
Danke für die Hilfe und Lenk mich in die richtige Richtung. Hier ist meine schlecht geschrieben, aber funktionierende Version: ' sort_indices = gmix.means_.argsort (Achse = 0) order = sort_indices [:, 0] print ('\ Norder:' Reihenfolge) gmix.means_ = gmix .means_ [order ,:] gmix.covars_ = gmix.covars_ [Ordnung:] print ("\ n \ n gmix.covars sortiert", gmix.covars_) print ("\ n \ Nori gmix. Gewichte \ n ", gmix.weights_) w = np.split (gmix.weights_, 3) w = np.asarray (w) w = np.ravel (w [order ,:]) gmix.weights_ = w –