power_transform#

sklearn.preprocessing.power_transform(X, method='yeo-johnson', *, standardize=True, copy=True)[Quelle]#

Parametrische, monotone Transformation, um Daten mehr Gauss'sche Eigenschaften zu verleihen.

Power-Transformationen sind eine Familie von parametrischen, monotonen Transformationen, die angewendet werden, um Daten gaußförmiger zu machen. Dies ist nützlich für die Modellierung von Problemen im Zusammenhang mit Heteroskedastizität (nicht-konstanter Varianz) oder anderen Situationen, in denen Normalität erwünscht ist.

Derzeit unterstützt `power_transform` die Box-Cox-Transformation und die Yeo-Johnson-Transformation. Der optimale Parameter zur Stabilisierung der Varianz und Minimierung der Schiefe wird durch maximale Likelihood geschätzt.

Box-Cox erfordert, dass die Eingabedaten streng positiv sind, während Yeo-Johnson sowohl positive als auch negative Daten unterstützt.

Standardmäßig wird eine Nullmittelwert- und Einheitsvarianz-Normalisierung auf die transformierten Daten angewendet.

Lesen Sie mehr im Benutzerhandbuch.

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

Die zu transformierenden Daten mittels einer Power-Transformation.

method{‘yeo-johnson’, ‘box-cox’}, default=’yeo-johnson’

Die Power-Transformationsmethode. Verfügbare Methoden sind

  • ‘yeo-johnson’ [1], funktioniert mit positiven und negativen Werten

  • ‘box-cox’ [2], funktioniert nur mit streng positiven Werten

Geändert in Version 0.23: Der Standardwert des Parameters method wurde in 0.23 von ‘box-cox’ auf ‘yeo-johnson’ geändert.

standardizebool, default=True

Setzen Sie auf True, um eine Nullmittelwert- und Einheitsvarianz-Normalisierung auf die transformierte Ausgabe anzuwenden.

copybool, Standard=True

Wenn False, versuchen Sie, eine Kopie zu vermeiden und die Transformation direkt durchzuführen. Dies ist nicht garantiert immer direkt möglich; z. B. wenn die Daten ein numpy-Array mit einem Integer-Datentyp sind, wird selbst bei copy=False eine Kopie zurückgegeben.

Gibt zurück:
X_transndarray von Form (n_samples, n_features)

Die transformierten Daten.

Siehe auch

PowerTransformer

Äquivalente Transformation mit der Transformer-API (z. B. als Teil einer Vorverarbeitungs- Pipeline).

quantile_transform

Bildet Daten auf eine Standard-Normalverteilung mit dem Parameter output_distribution='normal' ab.

Anmerkungen

NaNs werden als fehlende Werte behandelt: bei fit ignoriert und bei transform beibehalten.

Für einen Vergleich der verschiedenen Skalierer, Transformer und Normalisierer siehe: Vergleichen Sie die Auswirkung verschiedener Skalierer auf Daten mit Ausreißern.

Referenzen

[1]

I.K. Yeo und R.A. Johnson, „A new family of power transformations to improve normality or symmetry.“ Biometrika, 87(4), S. 954-959 (2000).

[2]

G.E.P. Box und D.R. Cox, „An Analysis of Transformations“, Journal of the Royal Statistical Society B, 26, 211-252 (1964).

Beispiele

>>> import numpy as np
>>> from sklearn.preprocessing import power_transform
>>> data = [[1, 2], [3, 2], [4, 5]]
>>> print(power_transform(data, method='box-cox'))
[[-1.332 -0.707]
 [ 0.256 -0.707]
 [ 1.076  1.414]]

Warnung

Risiko von Datenlecks. Verwenden Sie power_transform nicht, es sei denn, Sie wissen, was Sie tun. Ein häufiger Fehler ist, sie auf die gesamten Daten anzuwenden, *bevor* diese in Trainings- und Testdatensätze aufgeteilt werden. Dies wird die Modellevaluierung verzerren, da Informationen aus dem Testdatensatz in den Trainingsdatensatz geflossen wären. Im Allgemeinen empfehlen wir die Verwendung von PowerTransformer innerhalb einer Pipeline, um die meisten Risiken von Datenlecks zu vermeiden, z. B.: pipe = make_pipeline(PowerTransformer(), LogisticRegression()).