在 Python 中适配数据集的曲线

2024-06-28 19:37:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有两个数据集的图,它会产生一个轻微的梯度,其中一条最适合的曲线可能会被重叠。

目前我只找到了一条最合适的直线。我知道scipy.optimize.curve_fit应该能够帮助我,但这需要我知道我想要过度分配的函数(我想)。

下面是我的代码和绘图。如何为这些数据集创建曲线图?

plt.figure(figsize=(15,6.6))
pl.subplot(1,2,1) 
plt.plot(gg,AA, 'kx')
plt.xlabel('x')
plt.ylabel('y')
plt.gca().invert_yaxis()
y=AA
x=gg
fit=pl.polyfit(x,y,1)
#slope, fit_fn=pl.poly1d(fit)
fit_fn=pl.poly1d(fit)
scat=pl.plot(x,y, 'kx', x,fit_fn(x), '-b' )


pl.subplot(1,2,2) 
pl.plot(LL,pp, 'kx')#shows points with no removal or bestfit
plt.gca().invert_yaxis()

plt.savefig('1.jpg')
plt.show()

my plots the left one has the straight line of best fit

应该注意的是,可能没有曲线,但我想知道是否有一个适合。


Tags: 数据plotplt曲线fitaafnpl
1条回答
网友
1楼 · 发布于 2024-06-28 19:37:17

如果我理解的好,你的问题是一个概念而不是一个实际的问题。

如果要显示某种程度上代表数据集的行,可以从三个方面开始:移动平均、插值和多项式拟合。

移动平均数可以很好地平滑数据集。我不知道它的内置函数,但是您可以自己编写它,正如前面讨论的那样here

插值(spline,例如)适合数据集上的某些函数,这些函数可以在多个点上求值,然后绘制。

对于上述两种方法,您不必指定函数。但是,您可以自己fit a polynomial运行。如何确定多项式的次数?您可以记录所有数据点的日志,将一条直线拟合到日志数据,如果拟合得很好,线性部分的系数可以被视为与原始数据集的多项式次数。但是,不要使用太大程度的多项式-使用此方法很容易遇到overfitting

相关问题 更多 >