使用Python / Numpy将数据拟合到多项式曲线

时间:2015-08-24 09:39:22

标签: python numpy scipy curve-fitting polynomial-math

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

我正在尝试为曲线推导出一个表达式,以便我可以近似预测未来的数据点,例如在我绘制的数据之后的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.

1 个答案:

答案 0 :(得分:2)

尝试在75区间使用1度函数。真的使用多项式拟合而不是你想要的这种类型的函数。这看起来最像是连接在一起的2个线段,因此在某些点上的线性拟合将使您非常适合。