You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能耗时间序列预测的逆变换实现疑问:测试集逆差分与逆对数变换的前置值选取及操作方法

解决时间序列逆变换:从差分log值回到原始能耗

你遇到的问题很典型——当对时间序列做了log+差分的平稳化变换后,逆变换的关键就是找到差分操作的“起始锚点”,也就是训练集最后一个未差分的log值。我来一步步给你讲清楚怎么实现:

核心逻辑回顾

你对训练集的变换顺序是:
原始能耗 → 取log → 一阶差分 → 平稳序列
所以逆变换必须严格倒序执行:
预测的差分序列 → 逆差分(还原log序列) → 取exp(还原原始能耗)

第一步:找到逆差分的前置锚点

逆差分需要的前置值,是训练集原始数据取log之后、还没做差分的最后一个值。

举个例子,假设你最初的训练集是train_original(2011-05-01至2018-12-30的日度数据),那么你需要先重新计算这个锚点值:

import numpy as np
import pandas as pd

# 重新计算训练集的log值(如果之前没保存的话)
train_log = train_original["energy_val"].apply(np.log)
# 取训练集最后一个log值,这就是逆差分的起始锚点
initial_log_val = train_log.iloc[-1]

为什么是这个值?因为一阶差分的定义是diff_t = log_t - log_{t-1},测试集的第一个预测值对应2019-02-01的差分,它的前一个时刻是训练集最后一天2018-12-30,这个时刻的log值就是我们的锚点。

第二步:对测试集预测结果执行逆变换

现在用这个锚点来处理你的测试集预测数据:

# 假设你的测试集预测结果存在test_pred DataFrame中
# 1. 逆差分:累加预测的差分序列,再加上起始锚点
test_pred["log_energy"] = initial_log_val + test_pred["energy_val"].cumsum()

# 2. 逆log变换:还原到原始能耗尺度
test_pred["original_energy"] = np.exp(test_pred["log_energy"])

关键注意事项

  • 确保测试集的预测结果是按时间顺序排列的,cumsum()是按行的顺序累加,所以日期不能乱序。
  • 如果你的测试集里有缺失日期(比如你例子里的2019-02-03),只要预测的差分是对应正确时间点的,就不影响逆变换——因为差分本身就是相邻时间点的差值,缺失的日期意味着没有对应的预测,所以不需要处理。

这样处理后,test_pred["original_energy"]就是还原到原始尺度的能耗预测值了。

内容的提问来源于stack exchange,提问作者enterML

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 06:09:06