scale#

sklearn.preprocessing.scale(X, *, axis=0, with_mean=True, with_std=True, copy=True)[Quelle]#

Standardisiert einen Datensatz entlang einer beliebigen Achse.

Auf den Mittelwert zentrieren und komponentweise auf Einheitsvarianz skalieren.

Lesen Sie mehr im Benutzerhandbuch.

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

Die zu zentrierenden und zu skalierenden Daten.

axis{0, 1}, Standardwert=0

Achse, entlang der die Mittelwerte und Standardabweichungen berechnet werden. Wenn 0, werden die einzelnen Merkmale unabhängig standardisiert, andernfalls (wenn 1) werden die einzelnen Stichproben standardisiert.

with_meanbool, Standard=True

Wenn True, werden die Daten vor dem Skalieren zentriert.

with_stdbool, Standard=True

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

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.

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

Die transformierten Daten.

Siehe auch

StandardScaler

Führt die Skalierung auf Einheitsvarianz mittels der 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 potenziell zu Speichererschöpfungsproblemen führen könnte.

Stattdessen wird erwartet, dass der Aufrufer entweder explizit with_mean=False setzt (in diesem Fall wird nur die Varianzskalierung auf die Merkmale der CSC-Matrix angewendet) oder X.toarray() aufruft, wenn er/sie erwartet, dass das materialisierte dichte Array in den Speicher passt.

Um Speicherkopien zu vermeiden, sollte der Aufrufer eine CSC-Matrix übergeben.

NaNs werden als fehlende Werte behandelt: bei der Berechnung der Statistiken ignoriert und während der Datentransformation beibehalten.

Wir verwenden einen verzerrten Schätzer für die Standardabweichung, äquivalent zu numpy.std(x, ddof=0). Beachten Sie, dass die Wahl von ddof wahrscheinlich keinen Einfluss auf die Modellleistung hat.

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 scale nicht, es sei denn, Sie wissen, was Sie tun. Ein häufiger Fehler ist, es auf die gesamten Daten anzuwenden, *bevor* in Trainings- und Testdatensätze aufgeteilt wird. Dies würde die Modellevaluierung verzerren, da Informationen aus dem Testdatensatz in den Trainingsdatensatz gelangt wären. Im Allgemeinen empfehlen wir die Verwendung von StandardScaler innerhalb einer Pipeline, um die meisten Risiken von Datenlecks zu vermeiden: pipe = make_pipeline(StandardScaler(), LogisticRegression()).

Beispiele

>>> from sklearn.preprocessing import scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> scale(X, axis=0)  # scaling each column independently
array([[-1.,  1.,  1.],
       [ 1., -1., -1.]])
>>> scale(X, axis=1)  # scaling each row independently
array([[-1.37,  0.39,  0.98],
       [-1.22,  0.     ,  1.22]])