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

我花了一些时间,但我使用下面的代码为自己创建了一个适合我的 x,y 数据集的高斯分布。


import matplotlib.pyplot as plt

import numpy as np

from scipy.optimize import curve_fit

def Gauss(x, a, x0, sigma, offset):

    return a * np.exp(-(x - x0)**2 / (2 * sigma**2)) + offset

x, 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()

我可以看到我的合身性很好,可以看到图表和所有内容。

http://img3.mukewang.com/649157280001377906230399.jpg

我现在想知道的是如何在我的屏幕上打印出这个拟合的结果,例如拟合最大点 x 处的最大值、估计误差等?

这些信息可以访问吗?如果是这样,有没有办法打印出这些信息?如果不是,请问有人能指出正确的方向来找出合适的错误吗?


MMTTMM
浏览 118回答 3
3回答

桃花长相依

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

墨色风雨

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

慕妹3242003

你适合的所有相关信息都包含在 popt (最佳参数)和 pcov (协方差矩阵)中。在这种情况下,给定您的参数集(a、x0、sigma、offset),您可以将它们解压为:a, x0, sigma, offset = popt;类似地解开他们的不确定性:ua, ux0, usigma, uoffset = np.sqrt(np.diag(pcov));(因为它们由它们自己的协方差给出)。据我所知,curve_fit 不提供卡方或标准差等更多信息,我通常会在拟合完成后立即执行所需的计算,只需将所有平方差相加并除以原始值(但这更多一个统计的东西)。希望它有所帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python