为了账号安全,请及时绑定邮箱和手机立即绑定

如何打印高斯曲线拟合结果?

如何打印高斯曲线拟合结果?

MMTTMM 2023-06-20 15:36:38
我花了一些时间,但我使用下面的代码为自己创建了一个适合我的 x,y 数据集的高斯分布。import matplotlib.pyplot as pltimport numpy as npfrom scipy.optimize import curve_fitdef Gauss(x, a, x0, sigma, offset):    return a * np.exp(-(x - x0)**2 / (2 * sigma**2)) + offsetx, y = np.random.random(100), np.random.random(100)popt, pcov = curve_fit(Gauss, x, y, p0=[np.max(y), np.median(x), np.std(x), np.min(y)])plt.plot(x, y, 'b+:', label='data')x_fit = np.linspace(np.min(x), np.max(x), 1000)plt.plot(x_fit, Gauss(x_fit, *popt), 'r-', label='fit')plt.legend()plt.title('Something')plt.xlabel('Anotherthing')plt.ylabel('Athing')plt.show()我可以看到我的合身性很好,可以看到图表和所有内容。我现在想知道的是如何在我的屏幕上打印出这个拟合的结果,例如拟合最大点 x 处的最大值、估计误差等?这些信息可以访问吗?如果是这样,有没有办法打印出这些信息?如果不是,请问有人能指出正确的方向来找出合适的错误吗?
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

相关信息包含在您的变量popt和中pcov。每个变量都会返回一个数组。



查看完整回答
反对 回复 2023-06-20
?
墨色风雨

TA贡献1853条经验 获得超6个赞

您还可以将最终参数添加到绘图的标签How to return the fit error in Python curve_fit。



查看完整回答
反对 回复 2023-06-20
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

你适合的所有相关信息都包含在 popt (最佳参数)和 pcov (协方差矩阵)中。在这种情况下,给定您的参数集(a、x0、sigma、offset),您可以将它们解压为:

a, x0, sigma, offset = popt;

类似地解开他们的不确定性:

ua, ux0, usigma, uoffset = np.sqrt(np.diag(pcov));

(因为它们由它们自己的协方差给出)。

据我所知,curve_fit 不提供卡方或标准差等更多信息,我通常会在拟合完成后立即执行所需的计算,只需将所有平方差相加并除以原始值(但这更多一个统计的东西)。

希望它有所帮助。


查看完整回答
反对 回复 2023-06-20
  • 3 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信