如何在Python中反转间隔> 1的差异数据?

问题描述

当我只知道最后一个“真实”观察值时,我想反转间隔大于1的差异数据集。

在我的情况下,我有一个差异大于1的间隔的数据集,该数据集分为训练和测试集。经过训练的模型可以预测未来的差异。现在,我只想知道最后的“实际观测值”即可将预测的“差异”值转换回其实际值。

我有下面的轴以间隔= 1反转差异数据集。 我的问题是:如何对间隔为n> 1的数据集执行此操作?

import random

data = [random.randrange(1,100,1) for i in range(50)] 

def difference(data,interval):
    return [data[i] - data[i - interval] for i in range(interval,len(data))]
 

def inverse_difference(last_ob,forecast):
    inverted = [forecast[0] + last_ob]
    for i in range(1,len(forecast)):
        inverted.append(forecast[i] + inverted[i-1])
    return inverted

interval = 1

print('Origninal data \n{}'.format(data))

transformed = difference(data,interval)
print('\nDifferenced data \n{}'.format(transformed))

train = transformed[:30]
test = transformed[30:]

print('\nDifferenced test data \n{}'.format(test))

last_ob = data[30]
print('\nLast original observation \n{}'.format(last_ob))

print('\noriginal data \n{}'.format(data[30:]))

inverted = inverse_difference(last_ob,test)
print('\nInvert differeced data \n{}'. format(inverted))

输出

Origninal data 
[10,14,93,37,36,35,7,88,83,84,19,6,70,55,32,71,1,44,49,94,18,73,76,66,92,58,64,21,69,40,96,60,53,79,17,51,31,8]

Differenced data 
[4,-56,-1,-28,81,-5,-65,-13,-15,-23,3,-29,-34,-36,43,5,45,-76,-70,65,-22,26,20,-63,48,56,-7,-62,59,-25,-20,-24,1]

Differenced test data 
[26,1]

Last original observation 
66

Original data 
[66,8]

Invert differeced data 
[92,8]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)