我试图在多项式模型中找到指数增长趋势并且在识别它们时遇到问题。我在python中查看了scipy.optimize.curve_fit,但似乎无法在不绘制曲线的情况下弄清楚如何知道曲线的形状。最终目标是找到以下趋势:
我试过了:
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()
但是我无法在单个值中识别曲线的形状,然后可以对其进行排序以查看哪些具有正趋势。
答案 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),表示上升趋势。
二次拟合的前导系数凹度也是正的(形状平均凹陷)。