logo

StandardScaler in Sklearn

Wann und wie verwendet man StandardScaler?

Wenn die Merkmale des gegebenen Datensatzes innerhalb ihrer Bereiche erheblich schwanken oder in verschiedenen Maßeinheiten aufgezeichnet werden, kommt StandardScaler ins Spiel.

Die Daten werden auf eine Varianz von 1 skaliert, nachdem der Mittelwert über StandardScaler auf 0 reduziert wurde. Bei der Bestimmung des empirischen Mittelwerts der Daten und der Standardabweichung haben jedoch in den Daten vorhandene Ausreißer einen erheblichen Einfluss, der das Spektrum der charakteristischen Werte verringert.

Bei vielen Algorithmen für maschinelles Lernen können aufgrund dieser Variationen in den Startfunktionen Probleme auftreten. Wenn beispielsweise bei Algorithmen, die Entfernungen berechnen, eines der Features des Datensatzes Werte mit großen oder völlig unterschiedlichen Bereichen aufweist, steuert dieses bestimmte Feature des Datensatzes die Entfernungsberechnung.

osi-Referenzmodell in der Vernetzung

Die StandardScaler-Funktion von sklearn basiert auf der Theorie, dass die Variablen des Datensatzes, deren Werte in unterschiedlichen Bereichen liegen, nicht den gleichen Beitrag zu den Anpassungsparametern und der Trainingsfunktion des Modells leisten und sogar zu einer Verzerrung der mit diesem Modell getroffenen Vorhersagen führen können.

Bevor wir die Features in das Modell des maschinellen Lernens einbeziehen, müssen wir daher die Daten normalisieren (µ = 0, σ = 1). Um dieses potenzielle Problem anzugehen, wird häufig eine Standardisierung im Feature-Engineering eingesetzt.

Standardisierung mit Sklearn

 sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True) 

Durch Eliminieren des Mittelwerts aus den Merkmalen und deren Skalierung auf die Einheitsvarianz werden Merkmale mithilfe dieser Funktion standardisiert.

Die Formel zur Berechnung der Standardbewertung eines Features lautet z = (x – u) / s, wobei u der Mittelwert des Trainingsfeatures ist (oder Null, wenn with_mean = False) und s die Standardabweichung der Stichprobe ist (oder eins, wenn with_std = False). ).

Durch die Berechnung der relevanten Statistiken zu den Features im Trainingssatz werden Zentrierung und Skalierung unabhängig auf jedes Feature angewendet. Anschließend speichert die fit()-Methode zur Verwendung mit späteren Stichproben mithilfe von transform() den Mittelwert und die Standardabweichung.

if else-Schleife in Java

Parameter:

    kopieren (bool, Standard = True):-Wenn dieser Parameter auf True gesetzt ist, vermeiden Sie Kopien und skalieren Sie stattdessen die Samples an Ort und Stelle. Es ist nicht unbedingt garantiert, dass dies vor Ort funktioniert. Beispielsweise könnte die Funktion dennoch eine Kopie zurückgeben, wenn die Eingabe nicht in Form eines NumPy-Arrays oder einer scipy.sparse CSR-Matrix vorliegt.with_mean (bool, Standard = True):-Wenn der Parameter auf True gesetzt ist, skalieren Sie die Daten nach der Zentrierung. Bei der Anwendung auf dünn besetzte Matrizen schlägt dies fehl (und löst eine Ausnahme aus), da für deren Zentrierung die Konstruktion einer dichten Matrix erforderlich ist, die in den meisten Verwendungssituationen voraussichtlich zu groß ist, um in den RAM zu passen.with_std (bool, Standard = True): –Dieser Parameter skaliert die Eingabedaten auf die Einheitsvarianz, wenn er auf „true“ gesetzt ist (oder wir können sagen, dass er eine Einheitsstandardabweichung ergibt).

Attribute:

    scale_ (ndarray mit der Form (n_features,) oder Keine):-Die Daten werden für jedes Merkmal relativ skaliert, mit einem Mittelwert von Null und einer Einheitsvarianz.mean_ (ndarray mit der Form (n_features,) oder Keine):-Es handelt sich um den Durchschnittswert des Trainingsdatensatzes für jedes Feature. Wenn das Argument with_mean auf False gesetzt ist, ist dieser Wert gleich None.var_ (ndarray mit der Form (n_features,) oder Keine):-Es handelt sich um den Wert der Varianz jedes Merkmals im Trainingsdatensatz. Es wird verwendet, um den Maßstab der Features zu bestimmen. Wenn das Argument with_std auf False gesetzt ist, ist dieser Wert gleich None.n_features_in_ (vom Typ _int): –Dieses Attribut gibt die Anzahl der beim Anpassen erkannten Features an.feature_names_in_ (ndarray mit der Form (n_features_in_,)):-Bei diesem Attribut handelt es sich um die Features, die während der Anpassung durch Namen identifiziert werden. X ist nur definiert, wenn alle seine Feature-Namen vom Datentyp string sind.n_samples_seen_ (vom Typ int oder ein ndarray mit der Form (n_features,)):-Dies gibt die Anzahl der Stichproben an, die der Schätzer für jedes Merkmal untersucht hat.

Methoden der StandardScaler-Klasse

fit(X[, y, Beispielgewicht]) Diese Methode berechnet den Mittelwert und die Standardabweichung, die später zur Skalierung der Daten verwendet werden.
fit_transform(X[, y]) Diese Methode passt die Parameter der Daten an und transformiert sie dann.
get_feature_names_out([input_features]) Diese Methode ruft die Feature-Namen für die Transformation ab.
get_params([tief]) Diese Methode gibt die Parameter des jeweiligen Schätzers an.
inverse_transform(X[, kopieren]) Es reduziert die Größe der Daten, um sie an ihre ursprüngliche Form anzupassen.
partielle_fit(X[, y, Beispielgewicht]) Der Mittelwert und die Standardabweichung von X werden zur späteren Skalierung online berechnet.
set_params(**params) Mit dieser Methode wird der Wert der Parameter des Schätzers festgelegt.
transform(X[, kopieren]) Diese Methode transformiert die Daten mithilfe von Parametern, die bereits in der Klasse gespeichert sind.

Beispiel für StandardScaler

Zunächst importieren wir die benötigten Bibliotheken. Um die StandardScaler-Funktion verwenden zu können, müssen wir die Sklearn-Bibliothek importieren.

Dann laden wir den Iris-Datensatz. Wir können den IRIS-Datensatz aus der Bibliothek sklearn.datasets importieren.

Wir erstellen ein Objekt der StandardScaler-Klasse.

Trennung der unabhängigen und Zielfunktionen.

saure Eigenschaften

Wir werden die Methode fit transform() verwenden, um die Transformation in den Datensatz zu implementieren.

Syntax:

 object_ = StandardScaler() object_.fit_transform(features) 

Wir haben zunächst eine Instanz der StandardScaler()-Methode nach der oben genannten Syntax erstellt. Darüber hinaus standardisieren wir die Daten, indem wir fit_transform() zusammen mit dem bereitgestellten Objekt verwenden.

Code

 # Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_) 

Ausgabe

 [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]