如何将FbProphet预测得到的对数yhat值转换为原始数值?
解决FbProphet对数预测值的还原问题
Hey there! 我之前用Prophet做预测时也碰到过一模一样的对数转换后还原的困惑,这就给你讲清楚怎么操作~
核心原理
你之前用df['y'] = np.log(df['y'])把原始数据做了自然对数转换,那要还原预测值,只需要用自然指数函数(也就是对数的逆运算)就行,逻辑很简单:
原始数值 = exp(对数数值)
具体代码实现
假设你的预测结果存在名为forecast的DataFrame里,其中yhat是对数形式的预测值,直接用numpy.exp()就能转换回常规数值:
import numpy as np # 把对数预测值yhat转换为原始尺度的数值 forecast['yhat_actual'] = np.exp(forecast['yhat']) # 如果需要还原置信区间的上下限,也可以用同样的方法 forecast['yhat_lower_actual'] = np.exp(forecast['yhat_lower']) forecast['yhat_upper_actual'] = np.exp(forecast['yhat_upper'])
做完这一步,你就可以用yhat_actual和实际的n_tickets直接做对比分析啦~
小提醒
- 如果你的
yhat出现了负数,转换后会得到小于1的正数,但如果原始业务数据(比如票务数量n_tickets)都是正整数的话,这种情况可能意味着模型预测有问题,建议检查原始数据的完整性或者模型参数设置。 - 转换后的数据尺度和原始
n_tickets完全一致,不管是计算误差(比如MAE、RMSE)还是可视化对比,都可以直接用还原后的数值来做。
内容的提问来源于stack exchange,提问作者user9471916
相关产品推荐
相关产品推荐

