📜  特征缩放——第 3 部分

📅  最后修改于: 2022-05-13 01:54:33.423000             🧑  作者: Mango

特征缩放——第 3 部分

先决条件 - 特征缩放 |组 1 , 组 2

特征缩放是数据预处理中最重要的步骤之一。它适用于数据的自变量或特征。数据有时包含不同幅度的特征,如果我们不处理它们,算法只会考虑这些特征的幅度,而忽略单位。它有助于规范特定范围内的数据,有时还有助于加速算法中的计算。

强大的缩放器:

这使用与 Min-Max 缩放器类似的方法,但它使用四分位距,而不是 min-max,因此它对异常值具有鲁棒性。此 Scaler 删除中值并根据分位数范围(默认为 IQR:四分位距)缩放数据。 IQR 是第 1 个四分位数(第 25 个分位数)和第 3 个四分位数(第 75 个分位数)之间的范围。
使用以下公式:

Robust Scaler 的更多属性是:

  • Robust Scaler 作为 0 均值和单位方差
  • 与 Min-Max Scaler 不同,Robust Scaler 没有预定范围
  • Robust Scaler 使用四分位范围,这使得它对异常值不那么敏感


代码:

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

输出:

正如您在输出中看到的那样,在稳健缩放之后,分布被带入相同的比例并重叠,但异常值仍然在新分布的大部分之外。因此,稳健缩放是一种有效的数据缩放方法。