logo

Escalador estándar en Sklearn

¿Cuándo y cómo utilizar StandardScaler?

Cuando las características de un conjunto de datos determinado fluctúan significativamente dentro de sus rangos o se registran en varias unidades de medida, StandardScaler entra en escena.

Los datos se escalan a una varianza de 1 después de que la media se reduce a 0 mediante StandardScaler. Pero al determinar la media empírica de los datos y la desviación estándar, los valores atípicos presentes en los datos tienen un impacto significativo que reduce el espectro de valores característicos.

Muchos algoritmos de aprendizaje automático pueden encontrar problemas debido a estas variaciones en las funciones iniciales. Para los algoritmos que calculan la distancia, por ejemplo, si alguna de las características del conjunto de datos tiene valores que tienen rangos grandes o completamente diferentes, esa característica particular del conjunto de datos controlará el cálculo de la distancia.

La función StandardScaler de sklearn se basa en la teoría de que las variables del conjunto de datos cuyos valores se encuentran en diferentes rangos no tienen una contribución igual a los parámetros de ajuste y la función de entrenamiento del modelo e incluso pueden provocar sesgos en las predicciones realizadas con ese modelo.

clase de escáner java

Por lo tanto, antes de incluir las características en el modelo de aprendizaje automático, debemos normalizar los datos (μ = 0, σ = 1). La estandarización en la ingeniería de características se emplea comúnmente para abordar este problema potencial.

Estandarización usando Sklearn

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

Al eliminar la media de las características y escalarlas a la varianza unitaria, las características se estandarizan mediante esta función.

La fórmula para calcular la puntuación estándar de una característica es z = (x - u) / s, donde u es la media de la característica de entrenamiento (o cero si with_mean = False) y s es la desviación estándar de la muestra (o uno si with_std = False ).

Al calcular las estadísticas pertinentes sobre las características del conjunto de entrenamiento, el centrado y el escalado se aplican de forma independiente a cada característica. Luego, para su uso con muestras posteriores usando transform(), el método fit() almacena la media y la desviación estándar.

Parámetros:

    copiar (bool, predeterminado = Verdadero): -Si este parámetro está establecido en Verdadero, intente evitar las copias y escale las muestras en su lugar. No necesariamente se garantiza que esto funcione en su lugar; por ejemplo, la función aún podría devolver una copia si la entrada no tiene la forma de una matriz NumPy o una matriz CSR scipy.sparse.with_mean (bool, predeterminado = Verdadero): -Si el parámetro está establecido en Verdadero, escale los datos después de centrarlos. Cuando se aplica a matrices dispersas, esto falla (y genera una excepción), ya que centrarlas requiere la construcción de una matriz densa que, en la mayoría de las circunstancias de uso, se espera que sea demasiado grande para caber en el ariete.with_std (bool, predeterminado = Verdadero): -Este parámetro escala los datos de entrada a la varianza unitaria si se establece en verdadero (o podemos decir que genera una desviación estándar unitaria).

Atributos:

    escala_ (matriz ndar que tiene forma de (n_características) o Ninguna): -Los datos están relativamente escalados para cada característica con media cero y varianza unitaria.mean_ (ndarray que tiene forma de (n_features,) o Ninguno):-Es el valor promedio del conjunto de datos de entrenamiento para cada característica. Cuando el argumento with_mean se establece en False, este valor es igual a Ninguno.var_ (ndarray que tiene forma de (n_features,) o Ninguno):-Es el valor de la varianza de cada característica en el conjunto de datos de entrenamiento. Se utiliza para determinar la escala de las características. Cuando el argumento with_std se establece en False, este valor es igual a Ninguno.n_features_in_ (de tipo _int):-Este atributo proporciona la cantidad de características detectadas durante el ajuste.feature_names_in_ (ndarray que tiene forma como (n_features_in_,)): -Este atributo son las características identificadas por nombres durante el ajuste. X solo se define cuando todos los nombres de sus características son de tipo de datos cadena.n_samples_seen_ (de tipo int o un ndarray que tiene forma como (n_features,)):-Esto proporciona el número de muestras que el estimador examinó para cada característica.

Métodos de la clase StandardScaler

ajuste(X[, y, peso_muestra]) Este método calcula la media y la desviación estándar para usarlas más adelante para escalar los datos.
fit_transform(X[,y]) Este método ajusta los parámetros de los datos y luego los transforma.
get_feature_names_out([características_de entrada]) Este método obtiene los nombres de las características para la transformación.
get_params([profundo]) Este método proporciona los parámetros del estimador particular.
transformación_inversa(X[, copiar]) Reduce el tamaño de los datos para que coincidan con su forma original.
ajuste_parcial(X[, y, peso_muestra]) La media y la desviación estándar en X se calculan en línea para su posterior escalado.
set_params(**parámetros) Este método se utiliza para establecer el valor de los parámetros del estimador.
transformar(X[, copiar]) Este método transforma los datos utilizando parámetros ya almacenados en la clase.

Ejemplo de escalador estándar

En primer lugar, importaremos las bibliotecas necesarias. Para utilizar la función StandardScaler, necesitamos importar la biblioteca Sklearn.

Luego cargaremos el conjunto de datos del iris. Podemos importar el conjunto de datos IRIS desde la biblioteca sklearn.datasets.

Crearemos un objeto de la clase StandardScaler.

Separar las características independientes y de destino.

Usaremos el método fit transform() para implementar la transformación al conjunto de datos.

¿Cuál es el caso en SQL?

Sintaxis:

 object_ = StandardScaler() object_.fit_transform(features) 

Inicialmente creamos una instancia del método StandardScaler() siguiendo la sintaxis mencionada anteriormente. Además, estandarizamos los datos usando fit_transform() junto con el objeto proporcionado.

Código

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

Producción

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