Escalado de características – Parte 3

Requisito previo: escalado de características | Conjunto-1 , Conjunto-2

El escalado de características es uno de los pasos más importantes del preprocesamiento de datos. Se aplica a variables independientes o características de los datos. Los datos a veces contienen características con magnitudes variables y si no las tratamos, los algoritmos solo toman en cuenta la magnitud de estas características, descuidando las unidades. Ayuda a normalizar los datos en un rango particular y, a veces, también ayuda a acelerar los cálculos en un algoritmo.

Escalador robusto:

Esto utiliza un método similar al escalador Min-Max, pero en su lugar utiliza el rango intercuartílico, en lugar del mínimo-máximo, por lo que es resistente a los valores atípicos. Este escalador elimina la mediana y escala los datos de acuerdo con el rango de cuantiles (el valor predeterminado es IQR: rango intercuartílico). El IQR es el rango entre el primer cuartil (cuartil 25) y el tercer cuartil (cuartil 75).
Se utiliza la siguiente fórmula:

Algunas propiedades más de Robust Scaler son:

  • Escalador robusto como media 0 y varianza unitaria
  • Robust Scaler no tiene un rango predeterminado, a diferencia de Min-Max Scaler
  • Robust Scaler utiliza rangos de cuartiles y esto lo hace menos sensible a los valores atípicos


Código:

# Python code for Feature Scaling using Robust Scaling
  
""" PART 1:  Importing Libraries """
import pandas as pd
import numpy as np
from sklearn import preprocessing
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns % matplotlib inline
matplotlib.style.use('ggplot')
  
  
""" PART 2:  Making the data distributions """
x = pd.DataFrame({
    # Distribution with lower outliers
    'x1': np.concatenate([np.random.normal(20, 1, 2000), np.random.normal(1, 1, 20)]),
    # Distribution with higher outliers
    'x2': np.concatenate([np.random.normal(30, 1, 2000), np.random.normal(50, 1, 20)]),
})
  
  
""" PART 3:  Scaling the Data """
scaler = preprocessing.RobustScaler()
robust_scaled_df = scaler.fit_transform(x)
robust_scaled_df = pd.DataFrame(robust_scaled_df, columns =['x1', 'x2'])
  
  
""" PART 4:  Visualizing the impact of scaling """
fig, (ax1, ax2, ax3) = plt.subplots(ncols = 3, figsize =(9, 5))
ax1.set_title('Before Scaling')
sns.kdeplot(x['x1'], ax = ax1)
sns.kdeplot(x['x2'], ax = ax1)
ax2.set_title('After Robust Scaling')
sns.kdeplot(robust_scaled_df['x1'], ax = ax2)
sns.kdeplot(robust_scaled_df['x2'], ax = ax2)

Salida:

como puede ver en la salida, después del escalado robusto, las distribuciones se colocan en la misma escala y se superponen, pero los valores atípicos permanecen fuera del grueso de las nuevas distribuciones. Por lo tanto, el escalado robusto es un método eficaz para escalar los datos.

Publicación traducida automáticamente

Artículo escrito por abolirm y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *