在模型训练前做了归一化或者标准化处理。有了测试数据输入模型后怎样实现反归一化,有案例代码吗

来源:11-3 Soft Margin SVM

qq_慕姐45445

2019-03-05

在模型训练前做了归一化或者标准化处理。有了测试数据输入模型后怎样实现反归一化,有案例代码吗

写回答

1回答

liuyubobobo

2019-03-06

以标准化处理为例:

把一个数字x归一化成为x_normalized,如果使用x_normalized = (x - μ) / σ 的话,

那么如果已知一个x_normalized,反向求出x的方式就是  x= x_normalized *  σ + μ


当然,你的归一化方式可能是其他方式,比如你可能使用最大最小归一化:

x_normalized = (x - xmin) / (xmax - xmin),

那么反向,已知x_normalized,求x的方式就是 x = x_normalized * (xmax - xmin) + xmin


总之,就是将归一化的式子颠倒过来:)(反函数)


但是,对于机器学习算法来说,我们的模型是做预测,预测结果是某一个类(分类问题),或者一个数值(回归问题),所以我们只是对数据进行过一化处理(X),对结果是不需要归一化处理的(y)!(也不牵扯反归一化)。可以再仔细理解一下这个课程的实例,无论是房价预测,鸢尾花分类,手写识别还是人脸识别,我们从来不会对y做归一化处理,也不会对预测结果y做反归一化处理。我们训练的模型,测试数据输入之后,就可以直接得到结果。


但如果你训练模型的时候,喂给模型的那个y做过归一化处理,这个步骤其实已经和机器学习无关了。 就好比本来你的数据时高考学生数据,每个学生对应一个高考分数(0-750之间),但你先对这个高考分数做了归一化处理,变成0-1之间,那么你的模型预测的结果一定是0-1之间的数,你需要直到原先对y做归一化相应的参数(均值,方差,ymin,ymax),然后进行反向归一化。这个过程其实和机器学习的模型训练没关系:)


继续加油!:)

0
4
liuyubobobo
回复
Chris8
这个课程中讲的模型就是预测模型,一个 SVM 模型不能做归一化。如果训练的时候对数据进行了归一化,那么在进入 SVM 前需要做归一化。但是,生产环境中,算法工程师提供的可能是一个 pipeline,而不仅仅是一个预测模型。对于算法工程师提供的模块需要如何使用,需要询问相关人员,或者查询相关文档。
2020-04-17
共4条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程