如何解决如何在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 举报,一经查实,本站将立刻删除。