在Python中估计双高斯拟合的参数,可以使用科学计算库SciPy中的curve_fit函数进行拟合。具体步骤如下:
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
def bimodal_gaussian(x, a1, b1, c1, a2, b2, c2):
return a1 * np.exp(-(x - b1)**2 / (2 * c1**2)) + a2 * np.exp(-(x - b2)**2 / (2 * c2**2))
其中,a1和a2为两个高斯峰的幅度,b1和b2为两个高斯峰的中心位置,c1和c2为两个高斯峰的标准差。
x = np.linspace(0, 10, 100)
y = bimodal_gaussian(x, 1, 3, 0.5, 0.5, 7, 1) + np.random.normal(0, 0.05, size=x.shape)
在这个示例中,我们生成了一组带有噪声的双高斯分布的数据。
params, params_covariance = curve_fit(bimodal_gaussian, x, y, p0=[1, 3, 1, 0.5, 7, 1])
函数curve_fit接受三个参数:待拟合的函数模型、自变量x、因变量y。p0是一个初始参数的列表,用于指导拟合过程。
print("Estimated Parameters:")
print("a1 =", params[0])
print("b1 =", params[1])
print("c1 =", params[2])
print("a2 =", params[3])
print("b2 =", params[4])
print("c2 =", params[5])
这样就可以打印出拟合的结果,即估计出的双高斯分布的参数。
另外,如果需要可视化拟合结果,可以绘制拟合曲线:
plt.plot(x, y, 'bo', label='data')
plt.plot(x, bimodal_gaussian(x, *params), 'r-', label='fit')
plt.legend()
plt.show()
这段代码会绘制数据点和拟合曲线,并显示图例。
关于双高斯拟合参数估计的更多信息和相关概念,可以参考以下链接:
领取专属 10元无门槛券
手把手带您无忧上云