特征缩放:归一化与标准化
MinMaxScaler、StandardScaler、RobustScaler——分别何时使用以及为什么重要
特征缩放:归一化与标准化 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
为什么要缩放特征
许多算法对特征的 MAGNITUDE 很敏感。在基于距离或梯度的模型中,取值范围为 0 到 1,000,000 的特征会压倒取值范围为 0 到 1 的特征。缩放可以让特征处于可比较的范围内。
哪些模型需要缩放
KNN、SVM、k 均值、PCA,以及线性回归、逻辑回归和神经网络等基于梯度下降的模型都需要关注缩放。基于树的模型(随机森林、梯度提升)与缩放无关,因此不需要缩放。
归一化:MinMaxScaler
最小-最大归一化会将每个特征重新缩放到固定范围,通常是 0 到 1,使用的公式为 (x - min) / (max - min)。它会保留分布的形状。
from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[10.0], [20.0], [30.0], [40.0]])
scaler = MinMaxScaler()
print(scaler.fit_transform(X).ravel()) # [0. 0.333 0.667 1.]标准化:StandardScaler
标准化通过 (x - mean) / std使每个特征的均值为零、方差为 1。结果是 z 分数;数值会以零为中心,但不受固定边界限制。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Xs = scaler.fit_transform(X)
print(Xs.ravel())
print(Xs.mean(), Xs.std()) # ~0 and ~1MinMax 与标准化的比较
当您需要有界范围时(例如图像像素、神经网络输入),请使用 MinMax。当算法假设数据大致以零为中心时(PCA、SVM、线性模型),请使用标准化。MinMax 对异常值更加敏感。
用于处理异常值的 RobustScaler
RobustScaler以 MEDIAN 为中心,并根据 IQR 进行缩放。由于这两个统计量都不易受异常值影响,因此当极端值会扭曲其他缩放器的结果时,它是合适的选择。
from sklearn.preprocessing import RobustScaler
Xo = np.array([[1.0], [2.0], [3.0], [4.0], [100.0]])
print(RobustScaler().fit_transform(Xo).ravel())fit 与 transform
缩放器在 fit 中 LEARN 参数(最小值/最大值,或均值/标准差),并在 transform 中 APPLY 这些参数。fit_transform会在一次调用中完成这两个操作。
scaler = StandardScaler()
scaler.fit(X) # learns mean and std
Xs = scaler.transform(X) # applies them黄金规则:只在训练集上拟合
请始终在 TRAINING 集上执行 fit,然后只使用这些已学习的参数对测试集执行 transform。如果在测试数据上拟合,模型就会获得其中的信息。
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test) # transform only!为什么不能在测试集上拟合
如果使用包含测试集的统计量进行缩放,评估过程就会看到本不应获得的信息,这属于数据泄漏。它会产生过于乐观且不可靠的性能估计。
逆变换
缩放器可以使用 inverse_transform逆转操作,这对于将缩放后的预测值转换回原始单位并进行报告很有用。
original = scaler.inverse_transform(X_train_scaled)
# recovers the pre-scaled values缩放目标变量
在分类任务中,您通常缩放 FEATURES,而不是目标变量。在回归任务中,您也可以缩放目标变量,但请记得在报告误差前对预测值执行逆变换。
快速检查
请测试您对缩放的理解。
回顾
缩放工具箱:
- 缩放对于基于距离或梯度的模型很重要;树模型会忽略缩放
MinMaxScaler-> 有界的 0..1;StandardScaler-> 均值为零、方差为 1RobustScaler使用中位数和 IQR,因此对异常值具有稳健性- 请始终在训练集上执行
fit_transform,只在测试集上执行transform(避免数据泄漏)
常见问题解答
「特征缩放:归一化与标准化」课时是免费的吗?
是的 — 「特征缩放:归一化与标准化」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「特征缩放:归一化与标准化」这节课中我会学到什么?
MinMaxScaler、StandardScaler、RobustScaler——分别何时使用以及为什么重要 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「特征缩放:归一化与标准化」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。