请提供一段完整可以运行的python代码:优化函数使用高斯分布,拟合一维数据,使得分布的方差尽量大
时间: 2024-04-29 20:27:11 浏览: 82
以下是可以运行的Python代码,使用高斯分布拟合一维数据,使分布的方差尽量大。
```
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# 生成数据,这里使用 y = ax + b 的线性关系作为生成原始数据
xdata = np.linspace(0, 10, 100)
ydata = 2 * xdata + 1
# 添加随机噪声
ydata_noise = ydata + 0.2 * np.random.normal(size=len(xdata))
# 定义高斯函数
def gauss_func(x, a, x0, sigma):
return a * np.exp(-(x - x0) ** 2 / (2 * sigma ** 2))
# 使用 curve_fit 函数拟合高斯分布
popt, pcov = curve_fit(gauss_func, xdata, ydata_noise, p0=[1.0, 5.0, 1.0])
# 绘图显示结果
plt.plot(xdata, ydata_noise, 'b-', label='data')
plt.plot(xdata, gauss_func(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
# 输出拟合结果中的方差值
print('Optimized variance:', popt[2] ** 2)
```
这段代码首先生成了一组线性关系的数据,然后添加了随机噪声。之后,使用 `curve_fit` 函数对添加噪声的数据进行拟合,并且定义了高斯函数。最后,使用 matplotlib 库进行绘图,展示结果,并输出拟合结果中的方差值。
阅读全文