机器学习入门文档深度页
Min-Max 归一化
使用训练集最小值与最大值把特征线性映射到指定范围,典型为 [0,1]。
学习前需要掌握
最大值与最小值内容待补充训练数据边界内容待补充
背景与问题
某些算法或接口希望输入处于有限范围。与 Z-score 不同,Min-Max 不会使均值为 0,也不以标准差为尺度。
概念定义
Min-Max 缩放保持原始顺序和相对线性位置,把训练集最小值映射到 0、最大值映射到 1。
直观理解
把训练区间两端固定在 0 和 1,中间点按比例放置。未来数据超出训练范围时,结果可以小于 0 或大于 1。
核心原理
min 与 max 只能来自训练集。极端值会拉长区间,把大多数普通样本压缩到很窄范围,因此它对异常值敏感。
数学表达
Min-Max 公式
默认映射到 [0,1];分母为 0 时是常量特征。
变量含义
xⱼ,min第 j 列训练集最小值。xⱼ,max第 j 列训练集最大值。
计算步骤
- 110 → (10-10)/(30-10)=0
- 220 → 0.5
- 330 → 1
- 4未来值 40 → 1.5
代码对应位置
示例 1MinMaxScaler:安全保存训练区间并转换未来数据。
变量解释
| 变量 | 含义 |
|---|---|
xⱼ,min | 第 j 列训练集最小值。 |
xⱼ,max | 第 j 列训练集最大值。 |
完整数值示例
把 [10,20,30] 映射到 [0,1]
已知条件
- 训练最小值 10
- 训练最大值 30
- 1
10 → (10-10)/(30-10)=0
- 2
20 → 0.5
- 3
30 → 1
- 4
未来值 40 → 1.5
训练集变为 [0,0.5,1],未来值可以超过目标范围。
处理前后对比
- Z-score 使用均值和标准差,结果无固定上下界。
- Min-Max 使用端点,保持有限训练范围但更怕极端值。
计算与实现步骤
- 1
先划分数据。
- 2
在训练集拟合 min/max。
- 3
检查常量列和异常值。
- 4
转换所有分块。
- 5
保存 scaler 与模型。
代码实现
示例 1
MinMaxScaler
MinMaxScaler
scikit-learn
example_01.py用途:安全保存训练区间并转换未来数据。
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
train = [[10.0], [20.0], [30.0]]
future = [[40.0]]
print(scaler.fit_transform(train).ravel())
print(scaler.transform(future).ravel())代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
安全保存训练区间并转换未来数据。
scaler- 保存训练集缩放参数的转换器。
Step 1 · 1–1 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
from sklearn.preprocessing import MinMaxScalerStep 2 · 3–7 行
调用 fit 学习训练数据中的参数;若在 Pipeline 中,预处理器与模型会按顺序拟合。
scaler = MinMaxScaler()
train = [[10.0], [20.0], [30.0]]
future = [[40.0]]
print(scaler.fit_transform(train).ravel())
print(scaler.transform(future).ravel())预期输出或运行结果
[0. 0.5 1.],随后 [1.5]。
常见错误 · 3 条
- 以为未来结果一定在 [0,1]
- 存在异常值仍直接使用
- 测试集重新拟合端点
实际应用
- 有明确有限输入范围的模型
- 像素或传感器特征缩放
常见错误
以为未来结果一定在 [0,1]
存在异常值仍直接使用
测试集重新拟合端点
文档来源
02|数据预处理与特征工程原始文档
学习资料/learning_tech/02_preprocessing_feature_engineering.md- §5 Min-Max 归一化
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。