2015-08-24 53 views
1

我有一些时间序列数据,我试图用Numpy中的polyfit函数拟合曲线。我已使用date2num函数将日期时间x值转换为数字,并绘制了原始数据,即大约600个数据点(01-01-2014 - 10-08-2015)。用Python/Numpy将数据拟合成多项式曲线

我想要为曲线派生一个表达式,以便我可以近似预测未来的数据点,例如在未来30天内我的图形数据。但是,当以任何顺序绘制图表时,我的多项式表达式都是离开的。我确信我正在做一些明显错误的事情,但似乎无法破解它。

x = df["dates"] 
y= df["brand"] 

poly = numpy.polyfit(x, y, 5) 
polynomial = numpy.poly1d(poly) 

xs = numpy.linspace(x[0], x[-1]+60, len(x)+60) 
y_int = polynomial(xs) 

plt.plot(x, y) 
plt.plot(xs, y_int) 
plt.show() 

下图显示了蓝色的原始曲线。

Graph of two curves.

回答

5

我无法评论,因为我缺乏信誉。如果管理员将其转移到评论,我会很高兴。我相信问题是你的数据根本不看多项式。最后你会得到一个无法用多项式实现的平台。

也许尝试其他功能。在没有任何有关数据来源的知识的情况下,很难判断哪种功能是有用的......

2

尝试在间隔75上使用度数1函数。真正使用一个多项式不适合你想要的这种类型的函数。这看起来最像是连接在一起的两条线段,所以对一些点的线性拟合会给你一个非常合适的选择。