logo

StandardScaler a Sklearn

Quan i com utilitzar StandardScaler?

Quan les característiques del conjunt de dades donat fluctuen significativament dins dels seus rangs o es registren en diverses unitats de mesura, StandardScaler entra a la imatge.

Les dades s'escalen a una variància d'1 després que la mitjana es redueixi a 0 mitjançant StandardScaler. Però quan es determina la mitjana empírica de les dades i la desviació estàndard, els valors atípics presents a les dades tenen un impacte significatiu que redueix l'espectre de valors característics.

Molts algorismes d'aprenentatge automàtic poden trobar problemes a causa d'aquestes variacions en les funcions inicials. Per als algorismes que calculen la distància, per exemple, si alguna de les característiques del conjunt de dades té valors amb rangs grans o completament diferents, aquesta característica concreta del conjunt de dades controlarà el càlcul de la distància.

La funció StandardScaler de sklearn es basa en la teoria que les variables del conjunt de dades els valors de les quals es troben en diferents intervals no tenen una contribució igual als paràmetres d'ajust del model i a la funció d'entrenament i fins i tot poden provocar un biaix en les prediccions fetes amb aquest model.

Per tant, abans d'incloure les característiques en el model d'aprenentatge automàtic, hem de normalitzar les dades (µ = 0, σ = 1). L'estandardització en l'enginyeria de característiques s'utilitza habitualment per abordar aquest problema potencial.

Estandardització amb Sklearn

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

En eliminar la mitjana de les característiques i escalar-les a la variància de la unitat, les característiques s'estandarditzen mitjançant aquesta funció.

declaració java if else

La fórmula per calcular la puntuació estàndard d'una característica és z = (x - u) / s, on u és la mitjana de la característica d'entrenament (o zero si with_mean = False) i s és la desviació estàndard de la mostra (o una si with_std = False). ).

En calcular les estadístiques pertinents sobre les característiques del conjunt d'entrenament, el centratge i l'escala s'apliquen de manera independent a cada característica. Aleshores, per utilitzar-lo amb mostres posteriors amb transform(), el mètode fit() emmagatzema la mitjana i la desviació estàndard.

Paràmetres:

    copiar (bool, predeterminat = True):-Si aquest paràmetre s'estableix en True, intenteu evitar les còpies i escalar les mostres al seu lloc. Això no està necessàriament garantit que funcioni al seu lloc; per exemple, la funció encara pot tornar una còpia si l'entrada no té la forma d'una matriu NumPy o una matriu CSR scipy.sparse.with_mean (bool, predeterminat = True):-Si el paràmetre s'estableix en True, escala les dades després de centrar-les. Quan s'aplica a matrius escasses, això falla (i planteja una excepció), ja que centrar-les requereix la construcció d'una matriu densa que, en la majoria de les circumstàncies d'ús, s'espera que sigui massa gran per cabre en el ram.with_std (bool, per defecte = True):-Aquest paràmetre escala les dades d'entrada a la variància de la unitat si s'estableix en vertadera (o podem dir que fa una desviació estàndard de la unitat).

Atributs:

    scale_ (ndarray amb forma de (n_features,) o Cap):-Les dades s'escalen relativament per a cada característica amb una mitjana zero i variància unitat.mean_ (ndarray amb forma de (n_features,) o Cap):-És el valor mitjà del conjunt de dades d'entrenament per a cada característica. Quan l'argument with_mean s'estableix en Fals, aquest valor és igual a Cap.var_ (ndarray amb forma de (n_features,) o Cap):-És el valor de la variància de cada característica al conjunt de dades d'entrenament. S'utilitza per determinar l'escala de les característiques. Quan l'argument with_std s'estableix en Fals, aquest valor és igual a Cap.n_features_in_ (de tipus _int):-Aquest atribut proporciona el nombre de característiques detectades en ajustar-se.feature_names_in_ (ndarray amb forma com (n_features_in_,)):-Aquest atribut són les característiques identificades pels noms durant l'ajust. X només es defineix quan tots els seus noms de característiques són de cadena de tipus de dades.n_samples_seen_ (de tipus int o un ndarray amb forma com (n_features,)):-Això dóna el nombre de mostres que l'estimador va examinar per a cada característica.

Mètodes de la classe StandardScaler

ajustar(X[, y, pes_de_mostra]) Aquest mètode calcula la mitjana i la desviació estàndard per utilitzar més endavant per escalar les dades.
fit_transform(X[, y]) Aquest mètode ajusta els paràmetres de les dades i després les transforma.
get_feature_names_out([input_features]) Aquest mètode obté els noms de les característiques per a la transformació.
get_params([profund]) Aquest mètode proporciona els paràmetres de l'estimador particular.
transformació_inversa(X[, còpia]) Redueix la mida de les dades perquè coincideixin amb la seva forma original.
ajust_parcial(X[, y, pes_de_mostra]) La mitjana i la desviació estàndard de X es calculen en línia per a una escala posterior.
set_params(**params) Aquest mètode s'utilitza per establir el valor dels paràmetres de l'estimador.
transformar(X[, copiar]) Aquest mètode transforma les dades utilitzant paràmetres ja emmagatzemats a la classe.

Exemple de StandardScaler

En primer lloc, importarem les biblioteques necessàries. Per utilitzar la funció StandardScaler, hem d'importar la biblioteca Sklearn.

A continuació, carregarem el conjunt de dades de l'iris. Podem importar el conjunt de dades IRIS des de la biblioteca sklearn.datasets.

Crearem un objecte de la classe StandardScaler.

Separació de les característiques independents i objectiu.

Utilitzarem el mètode fit transform() per implementar la transformació al conjunt de dades.

Sintaxi:

 object_ = StandardScaler() object_.fit_transform(features) 

Inicialment vam crear una instància del mètode StandardScaler() seguint la sintaxi esmentada anteriorment. A més, estandarditzem les dades utilitzant fit_transform() juntament amb l'objecte proporcionat.

hiba bukhari

Codi

 # 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_) 

Sortida

 [[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]