【问题标题】:Fitting data to a polynomial curve with Python/Numpy使用 Python/Numpy 将数据拟合到多项式曲线
【发布时间】:2015-08-24 09:39:21
【问题描述】:

我有一些时间序列数据,我正在尝试使用 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()

下图以蓝色显示原始曲线。

【问题讨论】:

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


    【解决方案1】:

    我无法发表评论,因为我缺乏声誉。如果管理员将此移至 cmets,我会很高兴。我认为问题在于您的数据看起来根本不是多项式的。你最终会得到一个多项式无法实现的平台。

    也许尝试其他功能。如果不了解数据的来源,很难判断哪种函数有用...

    【讨论】:

      【解决方案2】:

      尝试在间隔 75 上使用 1 阶函数。真正使用多项式拟合不是您想要的此类函数。这看起来很像连接在一起的 2 条线段,因此对某些点进行线性拟合会得到很好的拟合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-02
        • 2015-12-16
        • 2018-02-16
        • 2013-10-10
        • 2018-08-18
        • 1970-01-01
        • 2018-12-09
        • 1970-01-01
        相关资源
        最近更新 更多