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}}
分别是特征的最小值和最大值,min
和 max
是目标缩放范围的下限和上限
⚙️ 使用方法
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
的详细信息,请参考官方文档:linkturn0search15。