微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python中的bettrer曲线拟合

如何解决Python中的bettrer曲线拟合

我想通过plogx + qx + r等式拟合数据。我使用下面的代码,我得到了这个数字,但我想更合适。可以通过约束P,Q,R来完成。

red line is fitting by this equation

from scipy.optimize import curve_fit
def func(x,P,Q,R):
    return (P*np.log10(x))+(Q*x)+R
ydata=np.array([0.21210878,0.22067094,0.18488919,0.18643416,0.19486116,0.19581927,0.19999324])
xdata=np.array([32,50,75,110,150,210,260])
plt.plot(xdata,ydata,'-ob',label='data')
popt,pcov = curve_fit(func,xdata,ydata)
print(popt)
plt.plot(xdata,func(xdata,*popt),'r-',label='fit: P=%6.4f,Q=%6.4f,R=%6.4f' % tuple(popt))

寻求帮助。

解决方法

数据本身似乎有问题(不像我期望的那样平滑)。如果您有局外人,我建议考虑考虑RANSAC拟合,它比简单的最小化器更强大。参见:https://en.wikipedia.org/wiki/Random_sample_consensus

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。