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_minist das erste Quantil undq_maxist 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 vonq_maxundq_minfü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
RobustScalerFü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=Falsezu setzen (in diesem Fall wird nur eine Varianzskalierung auf die Merkmale der CSR-Matrix angewendet) oderX.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_scalenicht, 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 vonRobustScalerinnerhalb 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. ]])