在一个数字中汇总多项式拟合数据,而不绘制

时间:2016-08-23 13:47:30

标签: python scipy polynomial-math

我试图在多项式模型中找到指数增长趋势并且在识别它们时遇到问题。我在python中查看了scipy.optimize.curve_fit,但似乎无法在不绘制曲线的情况下弄清楚如何知道曲线的形状。最终目标是找到以下趋势:

polynomial

我试过了:

z = np.polyfit(x, y, 3)
f = np.poly1d(z)

# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)

plt.plot(x,y,'o', x_new, y_new)
plt.xlim([x[0]-1, x[-1] + 1 ])
plt.show()

但是我无法在单个值中识别曲线的形状,然后可以对其进行排序以查看哪些具有正趋势。

1 个答案:

答案 0 :(得分:0)

  

在单个值中识别曲线的形状

这可以通过提取拟合多项式的一个最重要的系数polyfit来完成。当然,单个值只能给出一些趋势的粗略概念:上/下,凹上/下凹。方法如下:

x = np.arange(600)
y = np.exp(x/300) + np.cos(x/30) + np.random.uniform(size=x.shape)  # simulated data

slope = np.polyfit(x, y, 1)[0]
concavity = np.polyfit(x, y, 2)[0]
print(slope, concavity)

斜率是线性拟合的主导系数,为正(约0.01),表示上升趋势。

二次拟合的前导系数凹度也是正的(形状平均凹陷)。

data