请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2019-03-06 01:38:20

以标准化处理为例:

把一个数字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 回复 有任何疑惑可以回复我~
  • uuugggd #1
    那请问这种对y进行归一化的操作是可以进行的吗?
    y归一化的操作,是不是因为在反归一化的过程会丢失精度,所以一般不这么做?
    回复 有任何疑惑可以回复我~ 2019-10-20 19:23:29
  • liuyubobobo 回复 uuugggd #2
    可以进行。就算不丢失精度,对于这个课程的算法来说,完全没有必要。因为没有任何目的性。
    回复 有任何疑惑可以回复我~ 2019-10-21 04:15:48
  • Chris8 #3
    用归一化数据训练出来模型,模型上线后输入的数据也要做归一化处理吧?算法工程师提供的模型里边是否已经包含对输入数据的归一化处理?
    回复 有任何疑惑可以回复我~ 2020-04-16 17:47:57
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信