我有一个直方图
H=hist(my_data,bins=my_bin,histtype='step',color='r')
Run Code Online (Sandbox Code Playgroud)
我可以看到形状几乎是高斯的,但我想用高斯函数拟合这个直方图并打印我得到的均值和西格玛的值.你能帮助我吗?
Python curve_fit使用单个自变量计算函数的最佳拟合参数,但有没有办法,使用curve_fit或其他东西,以适应具有多个独立变量的函数?例如:
def func(x, y, a, b, c):
return log(a) + b*log(x) + c*log(y)
Run Code Online (Sandbox Code Playgroud)
其中x和y是自变量,我们想要适合a,b和c.
在python中我有一个有很多参数的函数.我想将此函数适用于数据集,但只使用一个参数,我想要自己提供的其余参数.这是一个例子:
def func(x,a,b):
return a*x*x + b
for b in xrange(10):
popt,pcov = curve_fit(func,x1,x2)
Run Code Online (Sandbox Code Playgroud)
在这里我希望仅适用于拟合a,参数b采用循环变量的值.如何才能做到这一点?
我有一组pts形成循环的点,它看起来像这样:

这有点类似于31243002,但是我不想在点对之间放置点,而是想在点之间插入一条平滑的曲线(坐标在问题的末尾给出),所以我尝试了类似于Interpolation的scipy文档.:
values = pts
tck = interpolate.splrep(values[:,0], values[:,1], s=1)
xnew = np.arange(2,7,0.01)
ynew = interpolate.splev(xnew, tck, der=0)
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
ValueError:输入数据错误
有没有办法找到这样的合适?
点数的坐标:
pts = array([[ 6.55525 , 3.05472 ],
[ 6.17284 , 2.802609],
[ 5.53946 , 2.649209],
[ 4.93053 , 2.444444],
[ 4.32544 , 2.318749],
[ 3.90982 , 2.2875 ],
[ 3.51294 , 2.221875],
[ 3.09107 , 2.29375 ],
[ 2.64013 , 2.4375 ],
[ 2.275444, 2.653124],
[ 2.137945, 3.26562 ],
[ 2.15982 …Run Code Online (Sandbox Code Playgroud) 问题:如果它们不是单值的,那么如何将曲线拟合到平面上的点?
对于所示的示例,如何将曲线(如黑色曲线)与嘈杂的蓝色数据拟合?它类似于样条平滑,但我不知道数据的顺序.
Matlab是首选,但伪代码很好.或者指向这个问题的正确术语的指针会很棒.
谢谢
我有两个NumPy数组x和y.当我尝试使用指数函数和curve_fit(SciPy)使用这个简单的代码来拟合我的数据时
#!/usr/bin/env python
from pylab import *
from scipy.optimize import curve_fit
x = np.array([399.75, 989.25, 1578.75, 2168.25, 2757.75, 3347.25, 3936.75, 4526.25, 5115.75, 5705.25])
y = np.array([109,62,39,13,10,4,2,0,1,2])
def func(x, a, b, c, d):
return a*np.exp(b-c*x)+d
popt, pcov = curve_fit(func, x, y)
Run Code Online (Sandbox Code Playgroud)
我得错了系数 popt
[a,b,c,d] = [1., 1., 1., 24.19999988]
Run Code Online (Sandbox Code Playgroud)
问题是什么?
我想numpy.polyfit用于物理计算,因此我需要误差的大小.
我有一个直方图(见下文),我试图找到平均值和标准偏差以及符合我的直方图曲线的代码.我认为SciPy或matplotlib中有一些东西可以提供帮助,但我尝试的每个例子都不起作用.
import matplotlib.pyplot as plt
import numpy as np
with open('gau_b_g_s.csv') as f:
v = np.loadtxt(f, delimiter= ',', dtype="float", skiprows=1, usecols=None)
fig, ax = plt.subplots()
plt.hist(v, bins=500, color='#7F38EC', histtype='step')
plt.title("Gaussian")
plt.axis([-1, 2, 0, 20000])
plt.show()
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 sigmoid 函数拟合到我拥有的一些数据中,但我不断收到:ValueError: Unable to determine number of fit parameters.
我的数据如下所示:
我的代码是:
from scipy.optimize import curve_fit
def sigmoid(x):
return (1/(1+np.exp(-x)))
popt, pcov = curve_fit(sigmoid, xdata, ydata, method='dogbox')
Run Code Online (Sandbox Code Playgroud)
然后我得到:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-5-78540a3a23df> in <module>
2 return (1/(1+np.exp(-x)))
3
----> 4 popt, pcov = curve_fit(sigmoid, xdata, ydata, method='dogbox')
~\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma, check_finite, bounds, method, jac, **kwargs)
685 args, varargs, varkw, defaults = _getargspec(f)
686 if len(args) < 2:
--> 687 raise …Run Code Online (Sandbox Code Playgroud) curve-fitting ×10
python ×8
scipy ×6
numpy ×3
histogram ×2
algorithm ×1
bezier ×1
data-fitting ×1
matlab ×1
matplotlib ×1
python-3.x ×1
sigmoid ×1
spline ×1