scikit-learn-Standard Scaler - Holen Sie sich die Standardabweichung in der ursprünglichen, nicht skalierten Raum für GMM
Bevor Sie eine GMM-clustering-Modell, ich benutze eine standard-Scaler zu verwandeln, meine Daten in eine 0 bedeutet, 1 std dataset
Haben dann durchgeführt, clustering, ich bin interessiert, die gelernt cluster zurück in den ursprünglichen Raum eher als die 0-Mittelwert, 1 Standardabweichung, in denen die feature-Werte mehr Sinn machen.
Ist es dann richtig, Folgendes zu tun:
-
Bekommen, den Mittelwert durch Multiplikation der Mittelwert der einzelnen cluster GMM durch die
scaler.mean_ Parameter. -
Holen Sie sich die Standardabweichung durch Multiplikation mit dem Quadrat der
Diagonale Kovarianz-matrix durch den scaler.std_ Parameter.
Ich würde schätzen jedes feedback,
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die cluster-Zentren können Sie
scaler.inverse_transform()
direkt (denn Sie Leben im gleichen Raum wie Ihre Daten). Es fügt die Spalte bedeutet, zurück und Skalen jeder Spalte wieder von seiner Standardabweichung.Werden Sie dann sehen, dass
gleich oder sehr nahe an
0
, so dass die beiden im wesentlichen gleich. Um die Automatisierung Sie r-pipeline, sollten Sie auch einen Blick aufsklearn.pipeline.Pipeline
, mit denen Sie verketten können, Ihre Prozesse und aufrufentransform
undinverse_transform
Methoden.Als für die Skalierung der Kovarianzmatrix, sollten Sie multiplizieren
np.diag(scaler.std_)
auf der rechten und auf der linken Seite der cluster-Kovarianz-Matrizen.Deine Frage zu beantworten:
1) erhält Man den Mittelwert von Multiplikation der cluster bedeutet, dass durch scaler.std_ und hinzufügen scaler.mean_ zurück.
2) skalieren Sie die cluster-Kovarianzen durch die Multiplikation von Links und rechts durch,
np.diag(scaler.std_)
nämlichrescaled_cov = np.diag(scaler.std_).dot(cov).dot(np.diag(scaler.std_))
Hinweis: Wenn Ihre Kovarianz-Matrizen sind ziemlich groß, können Sie nicht wollen, erstellen Sie eine andere (diagonal, aber dicht) - matrix der gleichen Größe. Der Betrieb
scaler.std_[:, np.newaxis] * cov * scaler.std_
ist mathematisch äquivalent zu 2) aber nicht erforderlich, die Diagonale matrix.