BayesianGaussianMixture#
- class sklearn.mixture.BayesianGaussianMixture(*, n_components=1, covariance_type='full', tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', weight_concentration_prior_type='dirichlet_process', weight_concentration_prior=None, mean_precision_prior=None, mean_prior=None, degrees_of_freedom_prior=None, covariance_prior=None, random_state=None, warm_start=False, verbose=0, verbose_interval=10)[source]#
Varianz-Bayes'sche Schätzung einer Gaußschen Mischung.
Diese Klasse ermöglicht die Inferenz einer approximativen Posterior-Verteilung über die Parameter einer Gaußschen Mischverteilung. Die effektive Anzahl von Komponenten kann aus den Daten abgeleitet werden.
Diese Klasse implementiert zwei Arten von Priors für die Gewichtsverteilung: ein endliches Mischmodell mit Dirichlet-Verteilung und ein unendliches Mischmodell mit dem Dirichlet-Prozess. In der Praxis wird der Inferenzalgorithmus für den Dirichlet-Prozess approximiert und verwendet eine trunkierte Verteilung mit einer festen maximalen Anzahl von Komponenten (genannt Stick-Breaking-Repräsentation). Die tatsächlich verwendete Anzahl von Komponenten hängt fast immer von den Daten ab.
Hinzugefügt in Version 0.18.
Mehr dazu im Benutzerhandbuch.
- Parameter:
- n_componentsint, default=1
Die Anzahl der Mischkomponenten. Abhängig von den Daten und dem Wert des Parameters
weight_concentration_priorkann das Modell entscheiden, nicht alle Komponenten zu verwenden, indem es einige Komponenten-weights_auf Werte sehr nahe Null setzt. Die Anzahl der effektiven Komponenten ist daher kleiner als n_components.- covariance_type{‘full’, ‘tied’, ‘diag’, ‘spherical’}, default=’full’
String, der den Typ der Kovarianzparameter beschreibt. Muss einer der folgenden sein:
‘full’ (jede Komponente hat ihre eigene allgemeine Kovarianzmatrix),
‘tied’ (alle Komponenten teilen sich dieselbe allgemeine Kovarianzmatrix),
‘diag’ (jede Komponente hat ihre eigene diagonale Kovarianzmatrix),
‘spherical’ (jede Komponente hat ihre eigene einzelne Varianz).
- tolfloat, Standard=1e-3
Der Konvergenzschwellenwert. EM-Iterationen stoppen, wenn der durchschnittliche Gewinn der unteren Schranke für die Likelihood (der Trainingsdaten in Bezug auf das Modell) unter diesem Schwellenwert liegt.
- reg_covarfloat, default=1e-6
Nicht-negative Regularisierung, die zur Diagonale der Kovarianzmatrizen hinzugefügt wird. Stellt sicher, dass die Kovarianzmatrizen alle positiv sind.
- max_iterint, default=100
Die Anzahl der durchzuführenden EM-Iterationen.
- n_initint, Standard=1
Die Anzahl der durchzuführenden Initialisierungen. Das Ergebnis mit dem höchsten Wert für die untere Schranke der Likelihood wird beibehalten.
- init_params{‘kmeans’, ‘k-means++’, ‘random’, ‘random_from_data’}, default=’kmeans’
Die Methode zur Initialisierung der Gewichte, Mittelwerte und Kovarianzen. Der String muss einer der folgenden sein:
‘kmeans’: Responsibilities werden mit kmeans initialisiert.
‘k-means++’: verwendet die k-means++ Methode zur Initialisierung.
‘random’: Responsibilities werden zufällig initialisiert.
‘random_from_data’: initiale Mittelwerte sind zufällig ausgewählte Datenpunkte.
Geändert in Version v1.1:
init_paramsakzeptiert jetzt ‘random_from_data’ und ‘k-means++’ als Initialisierungsmethoden.- weight_concentration_prior_type{‘dirichlet_process’, ‘dirichlet_distribution’}, default=’dirichlet_process’
String, der den Typ des Gewichts-Konzentrations-Priors beschreibt.
- weight_concentration_priorfloat oder None, default=None
Die Dirichlet-Konzentration jeder Komponente auf die Gewichtsverteilung (Dirichlet). Dies wird in der Literatur oft als Gamma bezeichnet. Eine höhere Konzentration legt mehr Masse in die Mitte und führt dazu, dass mehr Komponenten aktiv sind, während ein niedrigerer Konzentrationsparameter zu mehr Masse am Rand der Simplizes der Mischgewichte führt. Der Wert des Parameters muss größer als 0 sein. Wenn er None ist, wird er auf
1. / n_componentsgesetzt.- mean_precision_priorfloat oder None, default=None
Der Präzisions-Prior auf die Mittelwertverteilung (Gaußsch). Kontrolliert den Bereich, in dem Mittelwerte platziert werden können. Größere Werte konzentrieren die Cluster-Mittelwerte um den
mean_prior. Der Wert des Parameters muss größer als 0 sein. Wenn er None ist, wird er auf 1 gesetzt.- mean_priorarray-like, shape (n_features,), default=None
Der Prior auf die Mittelwertverteilung (Gaußsch). Wenn er None ist, wird er auf den Mittelwert von X gesetzt.
- degrees_of_freedom_priorfloat oder None, default=None
Der Prior für die Freiheitsgrade der Kovarianzverteilungen (Wishart). Wenn er None ist, wird er auf
n_featuresgesetzt.- covariance_priorfloat oder array-like, default=None
Der Prior auf die Kovarianzverteilung (Wishart). Wenn er None ist, wird der empirische Kovarianz-Prior mit der Kovarianz von X initialisiert. Die Form hängt von
covariance_typeab.(n_features, n_features) if 'full', (n_features, n_features) if 'tied', (n_features) if 'diag', float if 'spherical'
- random_stateint, RandomState-Instanz oder None, default=None
Kontrolliert den Zufallssamen, der an die zur Initialisierung der Parameter gewählte Methode (siehe
init_params) übergeben wird. Zusätzlich kontrolliert er die Generierung von Zufallsstichproben aus der angepassten Verteilung (siehe Methodesample). Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.- warm_startbool, Standard=False
Wenn ‘warm_start’ auf True gesetzt ist, wird die Lösung der letzten Anpassung als Initialisierung für den nächsten Aufruf von fit() verwendet. Dies kann die Konvergenz beschleunigen, wenn fit() mehrmals auf ähnlichen Problemen aufgerufen wird. Siehe das Glossar.
- verboseint, default=0
Aktiviert die ausführliche Ausgabe. Wenn 1, werden die aktuelle Initialisierung und jeder Iterationsschritt ausgegeben. Wenn größer als 1, werden auch die Log-Wahrscheinlichkeit und die benötigte Zeit für jeden Schritt ausgegeben.
- verbose_intervalint, default=10
Anzahl der durchgeführten Iterationen, bevor die nächste Ausgabe erfolgt.
- Attribute:
- weights_array-like, shape (n_components,)
Die Gewichte jeder Mischkomponente.
- means_array-like, shape (n_components, n_features)
Der Mittelwert jeder Mischkomponente.
- covariances_array-like
Die Kovarianz jeder Mischkomponente. Die Form hängt von
covariance_typeab.(n_components,) if 'spherical', (n_features, n_features) if 'tied', (n_components, n_features) if 'diag', (n_components, n_features, n_features) if 'full'
- precisions_array-like
Die Präzisionsmatrizen für jede Komponente in der Mischung. Eine Präzisionsmatrix ist die Umkehrung einer Kovarianzmatrix. Eine Kovarianzmatrix ist symmetrisch und positiv definit, daher kann die Gaußsche Mischung äquivalent durch die Präzisionsmatrizen parametrisiert werden. Das Speichern der Präzisionsmatrizen anstelle der Kovarianzmatrizen macht die Berechnung der Log-Likelihood neuer Stichproben zur Testzeit effizienter. Die Form hängt von
covariance_typeab.(n_components,) if 'spherical', (n_features, n_features) if 'tied', (n_components, n_features) if 'diag', (n_components, n_features, n_features) if 'full'
- precisions_cholesky_array-like
Die Cholesky-Zerlegung der Präzisionsmatrizen jeder Mischkomponente. Eine Präzisionsmatrix ist die Umkehrung einer Kovarianzmatrix. Eine Kovarianzmatrix ist symmetrisch und positiv definit, daher kann die Gaußsche Mischung äquivalent durch die Präzisionsmatrizen parametrisiert werden. Das Speichern der Präzisionsmatrizen anstelle der Kovarianzmatrizen macht die Berechnung der Log-Likelihood neuer Stichproben zur Testzeit effizienter. Die Form hängt von
covariance_typeab.(n_components,) if 'spherical', (n_features, n_features) if 'tied', (n_components, n_features) if 'diag', (n_components, n_features, n_features) if 'full'
- converged_bool
True, wenn die Konvergenz der besten Anpassung der Inferenz erreicht wurde, False sonst.
- n_iter_int
Anzahl der Schritte, die die beste Anpassung der Inferenz zur Erreichung der Konvergenz benötigt hat.
- lower_bound_float
Wert der unteren Schranke der Modellbeweiskraft (der Trainingsdaten) der besten Anpassung der Inferenz.
- lower_bounds_array-like, shape (
n_iter_,) Die Liste der Werte der unteren Schranke der Modellbeweiskraft aus jeder Iteration der besten Anpassung der Inferenz.
- weight_concentration_prior_tuple oder float
Die Dirichlet-Konzentration jeder Komponente auf die Gewichtsverteilung (Dirichlet). Der Typ hängt von
weight_concentration_prior_typeab.(float, float) if 'dirichlet_process' (Beta parameters), float if 'dirichlet_distribution' (Dirichlet parameters).
Eine höhere Konzentration legt mehr Masse in die Mitte und führt dazu, dass mehr Komponenten aktiv sind, während ein niedrigerer Konzentrationsparameter zu mehr Masse am Rand des Simplizes führt.
- weight_concentration_array-like, shape (n_components,)
Die Dirichlet-Konzentration jeder Komponente auf die Gewichtsverteilung (Dirichlet).
- mean_precision_prior_float
Der Präzisions-Prior auf die Mittelwertverteilung (Gaußsch). Kontrolliert den Bereich, in dem Mittelwerte platziert werden können. Größere Werte konzentrieren die Cluster-Mittelwerte um den
mean_prior. Wenn mean_precision_prior auf None gesetzt ist, wirdmean_precision_prior_auf 1 gesetzt.- mean_precision_array-like, shape (n_components,)
Die Präzision jeder Komponente auf die Mittelwertverteilung (Gaußsch).
- mean_prior_array-like, shape (n_features,)
Der Prior auf die Mittelwertverteilung (Gaußsch).
- degrees_of_freedom_prior_float
Der Prior für die Freiheitsgrade der Kovarianzverteilungen (Wishart).
- degrees_of_freedom_array-like, shape (n_components,)
Die Anzahl der Freiheitsgrade jeder Komponente im Modell.
- covariance_prior_float oder array-like
Der Prior auf die Kovarianzverteilung (Wishart). Die Form hängt von
covariance_typeab.(n_features, n_features) if 'full', (n_features, n_features) if 'tied', (n_features) if 'diag', float if 'spherical'
- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
Hinzugefügt in Version 0.24.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen der während fit gesehenen Merkmale. Nur definiert, wenn
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
Siehe auch
GaussianMixtureEndliche Gaußsche Mischung, angepasst mit EM.
Referenzen
Beispiele
>>> import numpy as np >>> from sklearn.mixture import BayesianGaussianMixture >>> X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [12, 4], [10, 7]]) >>> bgm = BayesianGaussianMixture(n_components=2, random_state=42).fit(X) >>> bgm.means_ array([[2.49 , 2.29], [8.45, 4.52 ]]) >>> bgm.predict([[0, 0], [9, 3]]) array([0, 1])
- fit(X, y=None)[source]#
Modellparameter mit dem EM-Algorithmus schätzen.
Die Methode passt das Modell
n_initmal an und setzt die Parameter, mit denen das Modell die höchste Likelihood oder untere Schranke hat. Innerhalb jedes Durchlaufs iteriert die Methode zwischen E-Schritt und M-Schritt fürmax_iterMal, bis die Änderung der Likelihood oder unteren Schranke kleiner alstolist, andernfalls wird eineConvergenceWarningausgelöst. Wennwarm_startaufTruegesetzt ist, wirdn_initignoriert und bei jedem ersten Aufruf eine einzige Initialisierung durchgeführt. Bei nachfolgenden Aufrufen beginnt das Training dort, wo es aufgehört hat.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Liste von n_dimensions-dimensionalen Datenpunkten. Jede Zeile entspricht einem einzelnen Datenpunkt.
- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- selfobject
Die angepasste Mischung.
- fit_predict(X, y=None)[source]#
Schätzt Modellparameter mit X und sagt die Labels für X vorher.
Die Methode passt das Modell
n_initmal an und setzt die Parameter, mit denen das Modell die höchste Likelihood oder untere Schranke hat. Innerhalb jedes Durchlaufs iteriert die Methode zwischen E-Schritt und M-Schritt fürmax_iterMal, bis die Änderung der Likelihood oder unteren Schranke kleiner alstolist, andernfalls wird eineConvergenceWarningausgelöst. Nach der Anpassung sagt sie das wahrscheinlichste Label für die Eingabedatenpunkte vorher.Hinzugefügt in Version 0.20.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Liste von n_dimensions-dimensionalen Datenpunkten. Jede Zeile entspricht einem einzelnen Datenpunkt.
- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- labelsarray, shape (n_samples,)
Komponenten-Labels.
- get_metadata_routing()[source]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
- Gibt zurück:
- routingMetadataRequest
Ein
MetadataRequest, der Routing-Informationen kapselt.
- get_params(deep=True)[source]#
Holt Parameter für diesen Schätzer.
- Parameter:
- deepbool, default=True
Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.
- Gibt zurück:
- paramsdict
Parameternamen, zugeordnet ihren Werten.
- predict(X)[source]#
Vorhersagt die Labels für die Datenpunkte in X mit dem trainierten Modell.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Liste von n_dimensions-dimensionalen Datenpunkten. Jede Zeile entspricht einem einzelnen Datenpunkt.
- Gibt zurück:
- labelsarray, shape (n_samples,)
Komponenten-Labels.
- predict_proba(X)[source]#
Bewertet die Dichte der Komponenten für jeden Stichprobenwert.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Liste von n_dimensions-dimensionalen Datenpunkten. Jede Zeile entspricht einem einzelnen Datenpunkt.
- Gibt zurück:
- resparray, shape (n_samples, n_components)
Dichte jeder Gaußschen Komponente für jede Stichprobe in X.
- sample(n_samples=1)[source]#
Generiert zufällige Stichproben aus der angepassten Gaußschen Verteilung.
- Parameter:
- n_samplesint, Standard=1
Anzahl der zu generierenden Stichproben.
- Gibt zurück:
- Xarray, shape (n_samples, n_features)
Zufällig generierte Stichprobe.
- yarray, shape (nsamples,)
Komponenten-Labels.
- score(X, y=None)[source]#
Berechnet die durchschnittliche Log-Likelihood pro Stichprobe der gegebenen Daten X.
- Parameter:
- Xarray-like, shape (n_samples, n_dimensions)
Liste von n_dimensions-dimensionalen Datenpunkten. Jede Zeile entspricht einem einzelnen Datenpunkt.
- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- log_likelihoodfloat
Log-Likelihood von
Xunter dem Gaußschen Mischmodell.
- score_samples(X)[source]#
Berechnet die Log-Likelihood jedes Samples.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Liste von n_dimensions-dimensionalen Datenpunkten. Jede Zeile entspricht einem einzelnen Datenpunkt.
- Gibt zurück:
- log_probarray, shape (n_samples,)
Log-Likelihood jeder Stichprobe in
Xunter dem aktuellen Modell.
- set_params(**params)[source]#
Setzt die Parameter dieses Schätzers.
Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie
Pipeline). Letztere haben Parameter der Form<component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.- Parameter:
- **paramsdict
Schätzer-Parameter.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
Galeriebeispiele#
Analyse des Konzentrations-Prior-Typs der Variation im Bayes'schen Gaußschen Gemisch