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_prior kann 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_params akzeptiert 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_components gesetzt.

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_features gesetzt.

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_type ab.

(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 Methode sample). 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_type ab.

(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_type ab.

(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_type ab.

(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_type ab.

(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, wird mean_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_type ab.

(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 X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

GaussianMixture

Endliche 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_init mal 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ür max_iter Mal, bis die Änderung der Likelihood oder unteren Schranke kleiner als tol ist, andernfalls wird eine ConvergenceWarning ausgelöst. Wenn warm_start auf True gesetzt ist, wird n_init ignoriert 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_init mal 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ür max_iter Mal, bis die Änderung der Likelihood oder unteren Schranke kleiner als tol ist, andernfalls wird eine ConvergenceWarning ausgelö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 X unter 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 X unter 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.