尝试使用曲线拟合来拟合直方图(分块数据)和高斯分布,以获得最佳平均值,标准差

2024-04-16 18:55:58 发布

您现在位置:Python中文网/ 问答频道 /正文

另一个高斯拟合问题,虽然有许多有用的教程/答案,但似乎没有一个能解决我的问题。我试图找到高斯拟合的二进制数据(从70-150100个数据点)。我是新来的,所以如果有任何错误请道歉。在

现在,代码正在为x_fity_fit抛出一个错误,我不知道为什么。在

这个错误是一个“无效语法”错误,popt和{}上的括号似乎没有什么区别。在

在我弄清楚之前,似乎无法对其余代码进行故障排除,但是如果有人对如何优化与二进制数据的高斯拟合提出建议,那将非常有帮助。在

谢谢!在

import pylab as py
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit

#grabs data from csv - just a list of numbers
#gadata=np.genfromtxt('gaussian-lab1.csv', autostrip=True)

#grabs initial mean/std values from data
m1 = gadata.mean()
s1 = gadata.std()

def gaus(x, a, x0, sigma):
    return a * np.exp(-(x - x0) ** 2 / (2 * sigma ** 2))

data = py.hist(gadata, bins=10)
histx = [0.5 * data[1][i] + data[1][i + 1] for i in xrange(10)]
histy = data[0]

popt, pcov = curve_fit(gaus, histx, histy, p0=(1, m1, s1,))
x_fit = py.linspace(histx[0], histx[-1], 10)
y_fit = gaus(x_fit, *popt)
plt.plot(x_fit, y_fit, color='r')

#plots histogram
plt.hist(gadata, 10, normed=True)

#plots a gaussian with mean/std that matches data.. but want optimized
#fit1 = ss.norm(loc=m1, scale=s1)
#plt.plot(x1, histo.pdf(x1), 'r-', lw=2)

Tags: 数据frompyimportdataas错误np
1条回答
网友
1楼 · 发布于 2024-04-16 18:55:58

高斯数据的最小方差的定义和最小平方拟合是一样的。这在任何维度都是正确的。因此,您可以为自己保存曲线拟合或任何其他拟合方法。在

相关问题 更多 >