标签: curve-fitting

用偏斜高斯拟合直方图

我想用倾斜的高斯拟合直方图。我从文本文件中获取数据:

rate, err = loadtxt('hist.dat', unpack = True)
Run Code Online (Sandbox Code Playgroud)

然后将它们绘制为直方图:

plt.hist(rate, bins= 128)
Run Code Online (Sandbox Code Playgroud)

这个直方图有一个偏斜的高斯形状,我想适合。我可以用一个简单的高斯来做到这一点,因为scipy包含了这个函数,但没有倾斜。我该如何继续?

可能返回的拟合优度测试是最好的。

python histogram curve-fitting scipy

3
推荐指数
1
解决办法
7697
查看次数

二维拟合与python

我需要拟合一个函数

z(u,v) = C u v^p
Run Code Online (Sandbox Code Playgroud)

也就是说,我有一个二维数据集,我要找到两个参数,C和p。numpy 或 scipy 中是否有可以直接执行此操作的内容?我查看了 scipy.optimize.leastsq,但我不清楚我将如何在这里使用它。

python numpy curve-fitting scipy

3
推荐指数
1
解决办法
3599
查看次数

适合使用Gnuplot的时间序列

我是Gnuplot的忠实粉丝,现在我想将fit-function用于时间序列.

我的数据集如下:

1.000000 1.000000 0.999795 0.000000 0.000000 0.421927 0.654222 -25.127700 1.000000 1994-08-12
1.000000 2.000000 0.046723 -0.227587 -0.689491 0.328387 1.000000 0.000000 1.000000 1994-08-12 
2.000000 1.000000 0.945762 0.000000 0.000000 0.400038 0.582360 -8.624480 1.000000 1995-04-19 
2.000000 2.000000 0.060228 -0.056367 -0.680224 0.551019 1.000000 0.000000 1.000000 1995-04-19
3.000000 1.000000 1.016430 0.000000 0.000000 0.574478 0.489638 -3.286880 1.000000 1995-07-15
Run Code Online (Sandbox Code Playgroud)

我的拟合脚本:

set timefmt "%Y-%m-%d"
set xdata time
set format x "%Y-%m-%d"
f(x)=a+b*x
fit f(x) "model_fit.dat" u 10:($2==2?$4:1/0) via a,b
Run Code Online (Sandbox Code Playgroud)

所以我对时间数据进行了条件拟合.我的问题是,Gnuplot拟合函数不适用于时间数据.我在这里发现了一个类似的问题:使用Gnuplot进行时间序列的线性回归,但我不想使用其他软件.我也不知道如何将时间值更改为数字,然后再返回....

任何人都可以帮我解决这个问题与Gnuplot?

非常感谢!

gnuplot time-series curve-fitting linear-regression

3
推荐指数
1
解决办法
1117
查看次数

gnuplot - 获取拟合参数错误,获取拟合输出值作为变量,将变量打印到屏幕

初始问题(部分回答)

我正在使用 gnuplot 的拟合例程来拟合某些数据的函数,并提取“特征衰减时间常数”。(我d在我的拟合函数中调用了这个参数。)

我使用脚本代码set fit quiet来防止大量文本被打印到终端。但是我现在无法知道最终的拟合值是多少!(除了检查日志文件......这是艰巨的......)

有没有办法可以获取最终的拟合参数值,将它们存储在变量中,然后打印该变量?

我想这是 2 个问题合二为一......如何打印变量值?

对初始问题的回答

因此,在玩弄 gnuplot 之后,我发现该print命令可以将变量打印到屏幕上,并且参数(例如)d已经可用作变量 - 即;它们已经是变量。

因此,我可以执行以下操作:print "d=",d- 此处的逗号用于分隔要打印的内容。所以我首先打印一个字符串,"d="然后是d.

下一个问题

如何获取我使用的变量的错误?例如; 如果我拟合一个带有参数 a、b 和 c 的函数,我如何在这些值上打印错误?

variables gnuplot curve-fitting data-fitting function-fitting

3
推荐指数
1
解决办法
5102
查看次数

将 scipy curve_fit 用于可变数量的参数

我有一个拟合函数,其形式如下:

def fit_func(x_data, a, b, c, N)
Run Code Online (Sandbox Code Playgroud)

其中a、b、c是lenth N的列表,其中的每一项都是scipy.optimize.curve_fit()中要优化的可变参数,N是用于循环索引控制的固定数。

按照这个问题,我想我可以修复 N,但我目前正在调用 curve_fit 如下:

params_0 = [a_init, b_init, c_init]
popt, pcov = curve_fit(lambda x, a, b, c: fit_func(x, a, b, c, N), x_data, y_data, p0=params_0)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误: lambda() 正好采用 Q 个参数(给定的 P)

Q 和 P 的变化取决于我的设置方式。

那么:对于初学者来说,这甚至可能吗?我可以将列表作为参数传递给 curve_fit 并具有我希望的行为,其中它将列表元素视为单个参数吗?假设答案是肯定的,那么我的函数调用做错了什么?

curve-fitting scipy python-2.7

3
推荐指数
1
解决办法
4837
查看次数

Scipy Curve_fit。多个参数的单独界限

我正在使用 Scipy 将我的数据拟合到一个函数中。该函数为我提供了 2 个参数的值,在本例中为ab。我想使用绑定参数来限制这些参数可以采用的值,每个参数都有自己的可接受值范围。

可接受的值:15< a <50 和 0.05< b <0.2

我想知道如何实现它们。官方文档只展示了如何对 1 个参数进行操作。这个问题类似于:Python curve fit library that allowed me to assignment bounds to parameters。这也只处理 1 个参数的边界。

这是我尝试过的:

def Ebfit(x,a,b):
    Eb_mean = a*(0.0256/kt)                         # Eb at bake temperature
    Eb_sigma = b*Eb_mean
    Foursigma =  4*Eb_sigma
    Eb_a = np.linspace(Eb_mean-Foursigma,Eb_mean+Foursigma,N_Device)
    dEb = Eb_a[1] - Eb_a[0]
    pdfEb_a = spys.norm.pdf(Eb_a,Eb_mean,Eb_sigma)

    ## Retention Time

    DMom = np.zeros(len(x),float)
    tau = (1/f0)*np.exp(Eb_a)
    for bb in range(len(x)):
        DMom[bb]= (1 - 2*(sum(pdfEb_a*(1 - …
Run Code Online (Sandbox Code Playgroud)

python boundary curve-fitting scipy python-3.x

3
推荐指数
1
解决办法
4236
查看次数

使用 SymPy 通过给定点构造符号插值样条

假设我从一些在 R2 上定义的简单数据集开始,如下所示:

DataPointsDomain = [0,1,2,3,4,5]
DataPointsRange =  [3,6,5,7,9,1]
Run Code Online (Sandbox Code Playgroud)

使用 scipy,我可以使用以下内容制作惰性多项式样条:

ScipySplineObject = scipy.interpolate.InterpolatedUnivariateSpline( 
    DataPointsDomain, 
    DataPointsRange, 
    k = 1, )
Run Code Online (Sandbox Code Playgroud)

sympy 中的等效对象是什么?

SympySplineObject = ...???
Run Code Online (Sandbox Code Playgroud)

(我想定义这个对象并在 sympy 对象上进行分析 sympy 操作,例如取积分、导数等...)

python spline curve-fitting sympy

3
推荐指数
1
解决办法
2172
查看次数

使用掩码 Python 去趋势

我有一个文件,我阅读如下:

data1 = np.loadtxt('lc1.out') 
x = data1[:, 0]
y = data1[:, 1] 
Run Code Online (Sandbox Code Playgroud)

不走寻常路

我想消除它,我在这里找到了一个非常有用的链接。

model = np.polyfit(x, y, 2)
predicted = np.polyval(model, x)
Run Code Online (Sandbox Code Playgroud)

无论如何,我想掩盖一部分数据,例如我将只使用掩码外的点进行拟合。例如,我只想使用低于 639.5 和大于 641.5 的数据和二阶多项式拟合。

我有使用ma.masked_outside(x, 639.5, 641.5)这样的想法,因为它很容易仅将掩码外的元素保存在数组中......但我不明白如何使用polyfit.

python numpy curve-fitting

3
推荐指数
1
解决办法
1755
查看次数

SciPy 曲线拟合参数的方差究竟是多少?(Python)

我目前正在 Python 中使用 scipy.optimize 包的 curve_fit 函数,并且知道如果您取从curve_fit 获得的协方差矩阵的对角线项的平方根,您将得到curve_fit 参数的标准偏差计算。我不确定的是,这个标准偏差究竟意味着什么。据我所知,这是使用黑塞矩阵的近似值,但确切的计算是什么?高斯钟形曲线上的标准偏差告诉您曲线特定范围内的面积百分比,所以我假设对于 curve_fit 它告诉您某些参数值之间有多少数据点,但显然这是不对的......

如果这应该是曲线拟合的基本知识,我很抱歉,但我真的无法弄清楚标准偏差的作用,它们表示参数上的错误,但这些参数被计算为最可能的函数拟合,它不像有一个完整的最佳参数集合,我们得到该集合的平均值,因此也有一个标准偏差。只有一个最佳值,有什么可比较的呢?我想我的问题真的归结为:我如何手动准确地计算这些标准偏差,而不仅仅是使用 Hesse 矩阵获得近似值?

python curve-fitting scipy

3
推荐指数
1
解决办法
2065
查看次数

python 3.3:scipy.optimize.curve_fit 不更新点的值

我正在尝试使用曲线拟合将自定义函数拟合到某些数据点。我试过一两个免费参数。我其他时候也用过。现在我正在努力适应,因为无论初始值是什么,算法总是返回初始输入值,具有无穷大的西格玛。我还尝试打印调用自定义函数的内部参数,但我不明白,我的自定义函数只调用了 4 次,前三个参数始终相同,最后一个参数相对变化10^-8 的参数。这看起来不对

curve-fitting scipy python-3.x

3
推荐指数
1
解决办法
852
查看次数