- 处理时序数据或者非图像类数据时候,如果所选用的模型的数据假设是:数据特征分布是高斯分布,则在归一化时候采用 “均值-方差标准化”,标准化后的数据分布呈正太分布,均值为 0, 方差为 1 的正太分布。如果原始数据的分布可以近似为高斯分布,否则标准化的效果会变得很糟糕。
- 在实际部署过程中,训练集和测试集是分开的,如果在训练集中使用了 Sklearn 中的 StandardScaler(),均值方差标准化,那么在实际线上测试时候,数据标准化时必须也采用训练集的均值和方差,在实际线上时,如果训练集可以放在部署环境中,则可以直接获取训练集的标准化对象,然后直接标准化测试集。如下:
min_max_scaler = preprocessing.MinMaxScaler()
train_minmax = min_max_scaler.fit(df_train)
# sacale the test data
test_minmax = min_max_scaler.transform(df_test)
如果训练集不能放在部署环境中,则需要从训练集中计算出 standardScaler._mean 和 standardScaler._std ,即均值和方差,然后用在测试集中,可以参考如下:
https://www.lizenghai.com/archives/20262.html
https://blog.csdn.net/csmqq/article/details/51461696
https://blog.csdn.net/zenghaitao0128/article/details/78361038
https://blog.csdn.net/weixin_40807247/article/details/82793220
- StandardScaler 标准化:原始特征分布近似于高斯分布,改变原始数据分布,变为标准高斯分布,均值为 0 ,方差为 1。
- MinMaxScaler 归一化:适用于数据集的标准差非常非常小,有时数据中有很多很多零(稀疏数据)需要保存住0元素,将数据缩放到 [0, 1] 之间。不会改变原始数据分布。