quantile_transform#

sklearn.preprocessing.quantile_transform(X, *, axis=0, n_quantiles=1000, output_distribution='uniform', ignore_implicit_zeros=False, subsample=100000, random_state=None, copy=True)[Quelle]#

Transformiert Merkmale mithilfe von Quantilinformationen.

Diese Methode transformiert die Merkmale so, dass sie einer Uniform- oder Normalverteilung folgen. Daher neigt diese Transformation dazu, die häufigsten Werte für ein gegebenes Merkmal zu verteilen. Sie reduziert auch die Auswirkungen von (marginalen) Ausreißern: Dies ist daher ein robustes Vorverarbeitungsschema.

Die Transformation wird auf jedes Merkmal unabhängig angewendet. Zuerst wird eine Schätzung der kumulativen Verteilungsfunktion eines Merkmals verwendet, um die ursprünglichen Werte auf eine Gleichverteilung abzubilden. Die erhaltenen Werte werden dann mit der zugehörigen Quantilfunktion auf die gewünschte Ausgabeverteilung abgebildet. Merkmalswerte neuer/unbekannter Daten, die unter oder über dem angepassten Bereich liegen, werden auf die Grenzen der Ausgabeverteilung abgebildet. Beachten Sie, dass diese Transformation nichtlinear ist. Sie kann lineare Korrelationen zwischen Variablen desselben Maßstabs verzerren, macht aber Variablen unterschiedlicher Maßstäbe direkter vergleichbar.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die zu transformierenden Daten.

axisint, Standard=0

Achse, entlang derer die Mittelwerte und Standardabweichungen berechnet werden. Wenn 0, wird jedes Merkmal transformiert, andernfalls (wenn 1) wird jede Stichprobe transformiert.

n_quantilesint, default=1000 oder n_samples

Anzahl der zu berechnenden Quantile. Dies entspricht der Anzahl der Landmarken, die zur Diskretisierung der kumulativen Verteilungsfunktion verwendet werden. Wenn n_quantiles größer ist als die Anzahl der Stichproben, wird n_quantiles auf die Anzahl der Stichproben gesetzt, da eine größere Anzahl von Quantilen keine bessere Annäherung an den Schätzer der kumulativen Verteilungsfunktion liefert.

output_distribution{‘uniform’, ‘normal’}, default=’uniform’

Marginale Verteilung für die transformierten Daten. Die Auswahlmöglichkeiten sind ‘uniform’ (Standard) oder ‘normal’.

ignore_implicit_zerosbool, default=False

Gilt nur für sparse Matrizen. Wenn True, werden die Sparse-Einträge der Matrix verworfen, um die Quantilstatistiken zu berechnen. Wenn False, werden diese Einträge als Nullen behandelt.

subsampleint or None, default=1e5

Maximale Anzahl von Stichproben, die zur Schätzung der Quantile für die rechnerische Effizienz verwendet werden. Beachten Sie, dass sich das Subsampling-Verfahren für wertgleiche Sparse- und Dense-Matrizen unterscheiden kann. Deaktivieren Sie das Subsampling, indem Sie subsample=None setzen.

Hinzugefügt in Version 1.5: Die Option None zur Deaktivierung des Subsamplings wurde hinzugefügt.

random_stateint, RandomState-Instanz oder None, default=None

Bestimmt die Zufallszahlengenerierung für Subsampling und Glättungsrauschen. Weitere Details finden Sie unter subsample. Übergeben Sie eine ganze Zahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

copybool, Standard=True

Wenn False, wird versucht, eine Kopie zu vermeiden und die Transformation inplace durchzuführen. Dies ist nicht garantiert, dass es immer inplace funktioniert. z. B. wenn die Daten ein Numpy-Array mit einem int-Datentyp sind, wird selbst bei copy=False eine Kopie zurückgegeben.

Geändert in Version 0.23: Der Standardwert von copy wurde in 0.23 von False auf True geändert.

Gibt zurück:
Xt{ndarray, sparse matrix} der Form (n_samples, n_features)

Die transformierten Daten.

Siehe auch

QuantileTransformer

Führt eine quantilebasierte Skalierung mit der Transformer-API durch (z. B. als Teil einer Vorverarbeitungs- Pipeline).

power_transform

Bildet Daten auf eine Normalverteilung ab, indem eine Potenztransformation verwendet wird.

scale

Führt eine Standardisierung durch, die schneller, aber weniger robust gegenüber Ausreißern ist.

robust_scale

Führt eine robuste Standardisierung durch, die den Einfluss von Ausreißern entfernt, aber Ausreißer und Inlierer nicht auf die gleiche Skala bringt.

Anmerkungen

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

Warnung

Risiko von Datenlecks

Verwenden Sie quantile_transform nicht, es sei denn, Sie wissen, was Sie tun. Ein häufiger Fehler ist, sie auf die gesamten Daten anzuwenden, *bevor* in Trainings- und Testsets aufgeteilt wird. Dies wird die Modellbewertung verzerren, da Informationen aus dem Testset in das Trainingsset geleakt wären. Im Allgemeinen empfehlen wir die Verwendung von QuantileTransformer innerhalb einer Pipeline, um die meisten Risiken eines Datenlecks zu vermeiden: pipe = make_pipeline(QuantileTransformer(), LogisticRegression()).

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

Beispiele

>>> import numpy as np
>>> from sklearn.preprocessing import quantile_transform
>>> rng = np.random.RandomState(0)
>>> X = np.sort(rng.normal(loc=0.5, scale=0.25, size=(25, 1)), axis=0)
>>> quantile_transform(X, n_quantiles=10, random_state=0, copy=True)
array([...])