robust_scale#

sklearn.preprocessing.robust_scale(X, *, axis=0, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)[Quelle]#

Standardisiert einen Datensatz entlang einer beliebigen Achse.

Zentriert auf den Median und komponentenweise skaliert gemäß dem Interquartilsabstand.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
X{array-like, sparse matrix} von Form (n_sample, n_features)

Die zu zentrierenden und zu skalierenden Daten.

axisint, Standard=0

Achse, entlang derer die Mediane und IQR berechnet werden. Wenn 0, wird jede Merkmal unabhängig skaliert, andernfalls (wenn 1) wird jede Stichprobe skaliert.

with_centeringbool, Standard=True

Wenn True, werden die Daten vor der Skalierung zentriert.

with_scalingbool, Standard=True

Wenn True, werden die Daten auf Einheitsvarianz (oder äquivalent, Einheitsstandardabweichung) skaliert.

quantile_rangetuple (q_min, q_max), 0.0 < q_min < q_max < 100.0, Standard=(25.0, 75.0)

Quantilbereich, der zur Berechnung von scale_ verwendet wird. Standardmäßig ist dies gleich dem IQR, d.h. q_min ist das erste Quantil und q_max ist das dritte Quantil.

Hinzugefügt in Version 0.18.

copybool, Standard=True

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

unit_variancebool, Standard=False

Wenn True, werden die Daten so skaliert, dass normalverteilte Merkmale eine Varianz von 1 haben. Im Allgemeinen, wenn der Unterschied zwischen den x-Werten von q_max und q_min für eine Standardnormalverteilung größer als 1 ist, wird der Datensatz nach unten skaliert. Wenn kleiner als 1, wird der Datensatz nach oben skaliert.

Hinzugefügt in Version 0.24.

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

Die transformierten Daten.

Siehe auch

RobustScaler

Führt Zentrierung und Skalierung über die Transformer-API durch (z.B. als Teil einer Vorverarbeitungs-Pipeline).

Anmerkungen

Diese Implementierung weigert sich, scipy.sparse Matrizen zu zentrieren, da dies sie nicht-sparse machen würde und das Programm aufgrund von Speichererschöpfungsproblemen potenziell abstürzen könnte.

Stattdessen wird vom Aufrufer erwartet, entweder explizit with_centering=False zu setzen (in diesem Fall wird nur eine Varianzskalierung auf die Merkmale der CSR-Matrix angewendet) oder X.toarray() aufzurufen, wenn erwartet wird, dass das materialisierte dichte Array in den Speicher passt.

Um Speicher kopieren zu vermeiden, sollte der Aufrufer eine CSR-Matrix übergeben.

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

Warnung

Risiko von Datenlecks

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

Beispiele

>>> from sklearn.preprocessing import robust_scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> robust_scale(X, axis=0)  # scale each column independently
array([[-1.,  1.,  1.],
       [ 1., -1., -1.]])
>>> robust_scale(X, axis=1)  # scale each row independently
array([[-1.5,  0. ,  0.5],
       [-1. ,  0. ,  1. ]])