FactorAnalysis#

class sklearn.decomposition.FactorAnalysis(n_components=None, *, tol=0.01, copy=True, max_iter=1000, noise_variance_init=None, svd_method='randomized', iterated_power=3, rotation=None, random_state=0)[Quelle]#

Faktoranalyse (FA).

Ein einfaches lineares generatives Modell mit gaußschen latenten Variablen.

Es wird angenommen, dass die Beobachtungen durch eine lineare Transformation von latenten Faktoren geringerer Dimensionalität und Rauschen mit Gaußscher Verteilung verursacht werden. Ohne Beschränkung der Allgemeinheit werden die Faktoren gemäß einer Gaußschen Verteilung mit Mittelwert Null und Einheitskovarianz verteilt. Das Rauschen hat ebenfalls einen Mittelwert von Null und eine beliebige diagonale Kovarianzmatrix.

Wenn wir das Modell weiter einschränken und annehmen, dass das Gaußsche Rauschen sogar isotrop ist (alle Diagonaleinträge sind gleich), erhalten wir PCA.

FactorAnalysis führt eine Maximum-Likelihood-Schätzung der sogenannten loading-Matrix (die Transformation der latenten Variablen zu den beobachteten) mithilfe eines SVD-basierten Ansatzes durch.

Mehr dazu im Benutzerhandbuch.

Hinzugefügt in Version 0.13.

Parameter:
n_componentsint, default=None

Dimensionalität des latenten Raums, die Anzahl der Komponenten von X, die nach der transform erhalten werden. Wenn None, wird n_components auf die Anzahl der Merkmale gesetzt.

tolfloat, default=1e-2

Stopp-Toleranz für die Erhöhung der Log-Likelihood.

copybool, Standard=True

Ob eine Kopie von X erstellt werden soll. Wenn False, wird das Eingabe-X während des Fittings überschrieben.

max_iterint, default=1000

Maximale Anzahl von Iterationen.

noise_variance_initarray-like, Form (n_features,), default=None

Die anfängliche Schätzung der Rauschvarianz für jedes Merkmal. Wenn None, wird standardmäßig np.ones(n_features) verwendet.

svd_method{‘lapack’, ‘randomized’}, default=’randomized’

Welche SVD-Methode verwendet werden soll. Wenn 'lapack' wird die Standard-SVD von scipy.linalg verwendet, wenn 'randomized' wird die schnelle Funktion randomized_svd verwendet. Standardmäßig 'randomized'. Für die meisten Anwendungen wird 'randomized' ausreichend präzise sein und gleichzeitig deutliche Geschwindigkeitsvorteile bieten. Die Genauigkeit kann auch durch höhere Werte für iterated_power verbessert werden. Wenn dies nicht ausreicht, sollten Sie für maximale Präzision 'lapack' wählen.

iterated_powerint, default=3

Anzahl der Iterationen für die Potenzmethode. Standardmäßig 3. Nur verwendet, wenn svd_method gleich 'randomized' ist.

rotation{‘varimax’, ‘quartimax’}, default=None

Wenn nicht None, wird die angegebene Rotation angewendet. Derzeit sind varimax und quartimax implementiert. Siehe „The varimax criterion for analytic rotation in factor analysis“ H. F. Kaiser, 1958.

Hinzugefügt in Version 0.24.

random_stateint oder RandomState-Instanz, default=0

Wird nur verwendet, wenn svd_method gleich 'randomized' ist. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

Attribute:
components_ndarray der Form (n_components, n_features)

Komponenten mit maximaler Varianz.

loglike_list, Form (n_iterations,)

Die Log-Likelihood bei jeder Iteration.

noise_variance_ndarray, Form (n_features,)

Die geschätzte Rauschvarianz für jedes Merkmal.

n_iter_int

Anzahl der durchgeführten Iterationen.

mean_ndarray der Form (n_features,)

Pro Merkmal empirischer Mittelwert, geschätzt aus dem Trainingsdatensatz.

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

PCA

Die Hauptkomponentenanalyse ist ebenfalls ein latentes lineares Variablenmodell, das jedoch gleiche Rauschvarianzen für jedes Merkmal annimmt. Diese zusätzliche Annahme macht probabilistische PCA schneller, da sie geschlossen berechnet werden kann.

FastICA

Unabhängige Komponentenanalyse, ein latentes Variablenmodell mit nicht-gaußschen latenten Variablen.

Referenzen

  • David Barber, Bayesian Reasoning and Machine Learning, Algorithmus 21.1.

  • Christopher M. Bishop: Pattern Recognition and Machine Learning, Kapitel 12.2.4.

Beispiele

>>> from sklearn.datasets import load_digits
>>> from sklearn.decomposition import FactorAnalysis
>>> X, _ = load_digits(return_X_y=True)
>>> transformer = FactorAnalysis(n_components=7, random_state=0)
>>> X_transformed = transformer.fit_transform(X)
>>> X_transformed.shape
(1797, 7)
fit(X, y=None)[Quelle]#

Trainiert das FactorAnalysis-Modell mit X unter Verwendung eines SVD-basierten Ansatzes.

Parameter:
Xarray-like der Form (n_samples, n_features)

Trainingsdaten.

yIgnoriert

Ignorierter Parameter.

Gibt zurück:
selfobject

FactorAnalysis-Klasseninstanz.

fit_transform(X, y=None, **fit_params)[Quelle]#

An Daten anpassen, dann transformieren.

Passt den Transformer an X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurück.

Parameter:
Xarray-like der Form (n_samples, n_features)

Eingabestichproben.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None

Zielwerte (None für unüberwachte Transformationen).

**fit_paramsdict

Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner fit-Methode akzeptiert.

Gibt zurück:
X_newndarray array der Form (n_samples, n_features_new)

Transformiertes Array.

get_covariance()[Quelle]#

Berechnet die Datenkovarianz mit dem FactorAnalysis-Modell.

cov = components_.T * components_ + diag(noise_variance)

Gibt zurück:
covndarray, Form (n_features, n_features)

Geschätzte Kovarianz der Daten.

get_feature_names_out(input_features=None)[Quelle]#

Holt die Ausgabemerkmale für die Transformation.

Die Feature-Namen werden mit dem kleingeschriebenen Klassennamen präfixiert. Wenn der Transformer z.B. 3 Features ausgibt, dann sind die Feature-Namen: ["klassenname0", "klassenname1", "klassenname2"].

Parameter:
input_featuresarray-like von str oder None, default=None

Wird nur verwendet, um die Feature-Namen mit den in fit gesehenen Namen zu validieren.

Gibt zurück:
feature_names_outndarray von str-Objekten

Transformierte Merkmalnamen.

get_metadata_routing()[Quelle]#

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)[Quelle]#

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.

get_precision()[Quelle]#

Berechnet die Datenpräzisionsmatrix mit dem FactorAnalysis-Modell.

Gibt zurück:
precisionndarray, Form (n_features, n_features)

Geschätzte Präzision der Daten.

score(X, y=None)[Quelle]#

Berechnet die durchschnittliche Log-Likelihood der Samples.

Parameter:
Xndarray der Form (n_samples, n_features)

Die Daten.

yIgnoriert

Ignorierter Parameter.

Gibt zurück:
llfloat

Durchschnittliche Log-Likelihood der Samples unter dem aktuellen Modell.

score_samples(X)[Quelle]#

Berechnet die Log-Likelihood jedes Samples.

Parameter:
Xndarray der Form (n_samples, n_features)

Die Daten.

Gibt zurück:
llndarray, Form (n_samples,)

Log-Likelihood jedes Samples unter dem aktuellen Modell.

set_output(*, transform=None)[Quelle]#

Ausgabecontainer festlegen.

Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.

Parameter:
transform{“default”, “pandas”, “polars”}, default=None

Konfiguriert die Ausgabe von transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: Die Transformationskonfiguration bleibt unverändert

Hinzugefügt in Version 1.4: Die Option "polars" wurde hinzugefügt.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_params(**params)[Quelle]#

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.

transform(X)[Quelle]#

Wendet Dimensionsreduktion auf X unter Verwendung des Modells an.

Berechnet den erwarteten Mittelwert der latenten Variablen. Siehe Barber, 21.2.33 (oder Bishop, 12.66).

Parameter:
Xarray-like der Form (n_samples, n_features)

Trainingsdaten.

Gibt zurück:
X_newndarray der Form (n_samples, n_components)

Die latenten Variablen von X.