归一化-sklearn.preprocessing.MinMaxScaler-数据预处理工具


sklearn.preprocessing.MinMaxScaler 是 scikit-learn 库中的一个数据预处理工具,用于将特征数据按比例缩放到指定的范围,通常是 [0, 1] 或 [-1, 1]。这种归一化处理有助于消除特征之间的尺度差异,使得各特征在同一量级上,从而提高机器学习模型的训练效率和性能。


🔍 功能说明

MinMaxScaler 对每个特征(列)进行线性变换,使其值缩放到指定的范围默认情况下,缩放范围是 [0, 1],但可以通过 feature_range 参数设置为其他范围,如 [-1, 1] 变换公式如下 [ X_{\text{scaled}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} \times (\text{max} - \text{min}) + \text{min} \ 其中,X 是原始数据,X_{\text{min}}X_{\text{max}} 分别是特征的最小值和最大值,minmax 是目标缩放范围的下限和上限


⚙️ 使用方法

1. 导入库

from sklearn.preprocessing import MinMaxScaler
```

#### 2. 创建数据

```python
import numpy as np

data = np.array([[-1, 2], [-0.5, 6], [0, 10], [1, 18]])
```

#### 3. 初始化 `MinMaxScaler`

```python
scaler = MinMaxScaler()
```

#### 4. 拟合并转换数据

```python
scaled_data = scaler.fit_transform(data)
```
`fit_transform` 方法首先计算每个特征的最小值和最大值然后将数据缩放到 [0, 1] 范围

#### 5. 查看结果

```python
print(scaled_data)
```
输出

[[0. 0. ] [0.25 0.25] [0.5 0.5 ] [1. 1. ]] ```

6. 自定义缩放范围

python scaler = MinMaxScaler(feature_range=(-1, 1)) scaled_data_custom = scaler.fit_transform(data) 这将数据缩放到 [-1, 1] 范围


🛠️ 常用方法

  • fit(X) 计算数据 X 的最小值和最大。
  • transform(X) 将数据 X 根据已计算的最小值和最大值进行缩。
  • fit_transform(X) 先拟合数据,再进行转换,常用于一次性操。
  • inverse_transform(X) 将已缩放的数据 X 恢复到原始范。
  • partial_fit(X) 在线学习模式下,逐步计算数据的最小值和最大。

✅ 使用场景

神经网络*: 激活函数(如 Sigmoid)对输入值范围敏感,归一化有助于加速收。 K 近邻算法(KNN): 距离计算依赖特征尺度,归一化确保各特征对距离的贡献均。 支持向量机(SVM): 核函数对输入数据的尺度敏感,归一化有助于提高分类效。 *梯度下降优化算法: 统一特征尺度有助于加速收。


⚠️ 注意事项

训练集与测试集的处理*: 应使用训练集的最小值和最大值来缩放测试集数据,避免数据泄。 异常值影响*: 异常值可能导致缩放后的数据分布不均,影响模型性。


如需进一步了解 MinMaxScaler 的详细信息,请参考官方文档:linkturn0search15。