python预测未来数据步骤_Python-Predicting /在给定数据集的情况下推断未来数据

我是Python的新手.我有一个数据集,我正在尝试使用numPy / sciPy来预测/推断未来的数据点.是否有一种简单的方法来提出适合我当前数据的数学函数(比如,正弦函数),然后我可以将新值传递给该函数以获得我的预测?

这就是我所拥有的,但我不认为它正在做我想要的:

import numpy as np

from scipy.optimize import curve_fit

import matplotlib.pyplot as plt

def main():

y = [8.3,8.3,7.2,7.8,9.4,10.6,10.0,11.1,12.8,11.7,8.9,6.7,13.3,15.0,15.6,6.0,6.1,12.2,14.4,16.7,8.0,13.9,9.0,12.0,13.0,11.0,5.6,8.3]

x = np.array(np.arange(len(y)))

fitting_parameters,covariance = curve_fit(fit,x,y)

a = fitting_parameters[0]

b = fitting_parameters[1]

c = fitting_parameters[2]

d = fitting_parameters[3]

for x_predict in range(len(y) + 1,len(y) + 24):

next_x = x_predict

next_y = fit(next_x,a,b,c,d)

print("next_x: " + str(next_x))

print("next_y: " + str(next_y))

y.append(next_y)

plt.plot(y)

plt.show()

def fit(x,d):

return a*np.sin(b*x + c) + d

我尝试使用curve_fit和univariatespline我的数据,但这只适合我当前的数据并分别平滑我的点数.我的观点是,这些工具只是“适合”我的数据,但实际上并没有给我一个我可以用来获得未来积分的功能.

我以为我可以使用离散傅里叶变换,因为我的数据是周期性的,看起来它可以被描述为正弦和余弦的总和.但是,一旦我从时域获得频域,我就会被困在如何“推断”以预测时域中的未来时段和点:

import numpy as np

import matplotlib.pyplot as plt

mydata = [8.3,8.3]

sp = np.fft.rfft(mydata)

freq = np.fft.rfftfreq(len(mydata),d= 1.0)

plt.subplot(211)

plt.plot(mydata)

plt.subplot(212)

plt.plot(freq,sp,'r')

plt.show()

我知道推断可能是危险的和不可靠的,但是为了这个项目的目的,我只是想获得一个可以绘制的工作预测函数.

非常感谢您的帮助.


版权声明:本文为weixin_39563722原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。