标签: data-fitting

用积分函数拟合数据

当使用curve_fitfrom scipy.optimize来拟合python中的某些数据时,首先定义拟合函数(例如二阶多项式),如下所示:

  1. def f(x, a, b): return a*x**2+b*x
  2. 然后进行拟合 popt, pcov = curve_fit(f,x,y)

但现在的问题是,如果函数包含一个整数(或一个离散的和),如何在第1点定义函数,例如:

在此输入图像描述

实验数据仍然给出了x和f(x),所以第2点就像我想象的一样,我可以在python中定义f(x).顺便说一下,我忘了说假设g(t)在这里有一个众所周知的形式,并且包含拟合参数,即在多项式例子中给出的像a和b这样的参数.任何帮助深表感谢.问题实际上应该是通用的,而帖子中使用的函数只是随机的例子.

python integral scipy data-fitting

11
推荐指数
1
解决办法
2837
查看次数

如何在3D中使用固定点进行多项式拟合

我在3D空间中有一组x,y,z点,另一个变量叫做charge表示在特定的x,y,z坐标中沉积的电荷量.我想对这个数据进行加权(通过检测器中沉积的电荷量加权,这对应于更高的重量以获得更多电荷),使得它通过给定点即顶点.

现在,当我为2D做这个时,我尝试了各种方法(将顶点带到原点并对所有其他点进行相同的变换,并强制拟合穿过原点,给出顶点非常高的权重)但是没有一个像Jaime在这里给出的答案一样好:如何用固定点进行多项式拟合

它使用拉格朗日乘数的方法,我从本科高级多变量课程中模糊地熟悉,但其他并不多,看起来这个代码的转换就像添加az坐标一样简单.(请注意,即使代码没有考虑到沉积的电荷量,它仍然给我最好的结果).我想知道是否有相同算法的版本,但是在3D中.我还在Gmail中联系了答案的作者,但没有收到他的回复.

以下是有关我的数据的更多信息以及我在2D中尝试做的事情:如何权衡散点图中的点以获得拟合?

这是我执行此操作的代码,其中我强制顶点位于原点,然后适合数据设置fit_intercept=False.我目前正在研究2D数据的这种方法,因为我不确定拉格朗日乘数是否有3D版本,但是在3D中有线性回归方法,例如,这里:在3D中拟合一条线:

import numpy as np
import sklearn.linear_model

def plot_best_fit(image_array, vertexX, vertexY):
    weights = np.array(image_array)
    x = np.where(weights>0)[1]
    y = np.where(weights>0)[0]
    size = len(image_array) * len(image_array[0])
    y = np.zeros((len(image_array), len(image_array[0])))
    for i in range(len(np.where(weights>0)[0])):
        y[np.where(weights>0)[0][i]][np.where(weights>0)[1][i]] = np.where(weights>0)[0][i]
    y = y.reshape(size)
    x = np.array(range(len(image_array)) * len(image_array[0]))
    weights = weights.reshape((size))
    for i in range(len(x)):
        x[i] -= vertexX
        y[i] -= vertexY
    model = sklearn.linear_model.LinearRegression(fit_intercept=False)
    model.fit(x.reshape((-1, 1)),y,sample_weight=weights)
    line_x = np.linspace(0, 512, 100).reshape((-1,1))
    pred …
Run Code Online (Sandbox Code Playgroud)

python curve-fitting data-fitting

9
推荐指数
1
解决办法
618
查看次数

在3D中为3D点数据拟合3D线?

我花了相当多的时间试图找到一种简单的方法来做到这一点 - 理想情况下,一个神奇的图书馆存在于那里,它将采用我的3D数据点并使用正交的最佳拟合线返回2个点回归或最小二乘并且还返回拟合线的误差.这样的事情是否存在,若然,在哪里?

java math 3d data-fitting

8
推荐指数
1
解决办法
2911
查看次数

Lorentzian scipy.optimize.leastsq适合数据失败

自从我参加Python演讲以来,我想用它来拟合我的数据.虽然我现在已经尝试了一段时间,但我仍然不知道为什么这不起作用.

我想做什么

从子文件夹中获取一个接一个的数据文件(此处称为'Test'),稍微转换数据并使用Lorentzian函数拟合.

问题描述

当我运行下面发布的代码时,它不适合任何东西,只是在4次函数调用后返回我的初始参数.我想缩放数据,以玩耍ftolmaxfev一遍又一遍地检查Python文档后,但没有好转.我也尝试将列表更改为numpy.arrays明确,以及给出问题的解决方案scipy.optimize.leastsq返回最佳猜测参数,而不是新的最佳拟合,x = x.astype(np.float64).没有得到改善.奇怪的是,对于少数选定的数据文件,这些相同的代码在某些时候起作用,但对于大多数人来说,它从未这样做过.它绝对可以装,因为Levenberg-Marquard装配程序在Origin中给出了相当好的结果.

有人能告诉我出了什么问题或指出替代方案......?

import numpy,math,scipy,pylab
from scipy.optimize import leastsq
import glob,os
for files in glob.glob("*.txt"):
    x=[]
    y=[]
    z=[]
    f = open(files, 'r')
    raw=f.readlines()
    f.close()
    del raw[0:8]       #delete Header
    for columns in ( raw2.strip().split() for raw2 in raw ):  #data columns
        x.append(float(columns[0]))
        y.append(float(columns[1]))
        z.append(10**(float(columns[1])*0.1)) #transform data for the fit
    def lorentz(p,x):
        return (1/(1+(x/p[0] - 1)**4*p[1]**2))*p[2]
    def errorfunc(p,x,z):
        return lorentz(p,x)-z

    p0=[3.,10000.,0.001]

    Params,cov_x,infodict,mesg,ier = leastsq(errorfunc,p0,args=(x,z),full_output=True)
    print Params
    print …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy least-squares data-fitting

8
推荐指数
1
解决办法
1万
查看次数

如何在scipy.stats.gamma.fit中获取拟合参数的误差估计?

我有一些我适合使用scipy.stats的gamma分布.我能够提取形状,位置和比例参数,它们看起来与我期望的数据范围合理.

我的问题是:有没有办法在参数中得到错误?类似于curve_fit的输出.注意:我不直接使用曲线拟合,因为它不能正常工作,并且大多数时间都无法计算伽马分布的参数.另一方面,scipy.stats.gamma.fit工作正常.

这是我正在做的一个例子(没有我的实际数据).

from scipy.stats import gamma
shape = 12; loc = 0.71; scale = 0.0166
data = gamma.rvs(shape, loc=loc, scale=scale, size=1000)
params = gamma.fit(data) # params close to but not the same as (shape, loc, scale) 
# HOW TO ESTIMATE/GET ERRORS FOR EACH PARAM?
Run Code Online (Sandbox Code Playgroud)

提前致谢

python numpy curve-fitting scipy data-fitting

7
推荐指数
1
解决办法
2398
查看次数

是否有一个GNU Octave等效的Matlab函数"fit"?

我的信号分析课程老师给了我一些我必须执行的Matlab代码才能完成一个家庭作业.我一直在使用GNU Octave没有麻烦,但这一次有这个命令令我头疼.

[c8,g8]=fit(time, sin_4_harmonic,’fourier8’)
Run Code Online (Sandbox Code Playgroud)

我找不到GNU Octave中的"fit"函数,它在下面的url http://www.mathworks.se/help/curvefit/fit.html中为Matlab引用

有谁知道我应该加载哪个包,或者是否有任何等价物?

谢谢=)

matlab octave curve-fitting data-fitting

6
推荐指数
1
解决办法
1万
查看次数

使用Python和lmfit拟合复杂模型?

我想使用lmfit 将椭圆测量数据拟合到复杂模型中.两个测量参数,psidelta是复杂函数中的变量rho.

我可以尝试用共享参数picewise方法将问题分离到实部和虚部,但是有没有办法直接用复杂函数来做?仅适合函数的实部工作,但是当我定义复杂的残差函数时,我得到:

TypeError:没有为复数定义排序关系.

下面是我的实际功能拟合代码和我尝试解决复杂的拟合问题:

    from __future__ import division
    from __future__ import print_function
    import numpy as np
    from pylab import *
    from lmfit import minimize, Parameters, Parameter, report_errors


    #=================================================================
    #             MODEL

    def r01_p(eps2, th):
        c=cos(th)
        s=(sin(th))**2

        stev= sqrt(eps2) * c - sqrt(1-(s / eps2))
        imen= sqrt(eps2) * c + sqrt(1-(s / eps2))
        return stev/imen

    def r01_s(eps2, th):
        c=cos(th)
        s=(sin(th))**2

        stev= c - sqrt(eps2) * sqrt(1-(s/eps2))
        imen= c + …
Run Code Online (Sandbox Code Playgroud)

python scipy model-fitting data-fitting lmfit

6
推荐指数
1
解决办法
3114
查看次数

从 scipy optimize.least_squares 方法获取拟合参数的协方差矩阵

我正在使用 scipy.optimize 的east_squares 方法来执行约束非线性最小二乘优化。我想知道如何获取拟合参数的协方差矩阵,以便获得拟合参数的误差线?

对于curve_fitlesssq来说,这似乎非常清楚,但对于 east_squares 方法来说,则不太清楚(至少对我来说)。

我一直在做的一种方法是,因为我知道least_squares返回雅可比矩阵J(这是“jac”返回值),那么我所做的就是用2*J^T J近似Hessian H。最后,协方差矩阵是 H^{-1},因此大约是 (2*J^TJ)^{-1},但我担心这对协方差的近似可能太粗糙?

python curve-fitting scipy data-fitting non-linear-regression

6
推荐指数
1
解决办法
6735
查看次数

Python幂律适合使用ODR的数据上限和非对称错误

我正在尝试使用python将一些数据拟合到幂律中.问题是我的一些点是上限,我不知道如何包含在拟合例程中.

在数据中,我把上限作为y中的误差等于1,其余的则小得多.您可以将此错误设置为0并更改uplims列表生成器,但随后拟合非常糟糕.

代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.odr import *

# Initiate some data
x = [1.73e-04, 5.21e-04, 1.57e-03, 4.71e-03, 1.41e-02, 4.25e-02, 1.28e-01, 3.84e-01, 1.15e+00]
x_err = [1e-04, 1e-04, 1e-03, 1e-03, 1e-02, 1e-02, 1e-01, 1e-01, 1e-01]
y = [1.26e-05, 8.48e-07, 2.09e-08, 4.11e-09, 8.22e-10, 2.61e-10, 4.46e-11, 1.02e-11, 3.98e-12]
y_err = [1, 1, 2.06e-08, 2.5e-09, 5.21e-10, 1.38e-10, 3.21e-11, 1, 1]

# Define upper limits
uplims = np.ones(len(y_err),dtype='bool')
for i in range(len(y_err)):
    if y_err[i]<1:
        uplims[i]=0
    else:
        uplims[i]=1

# …
Run Code Online (Sandbox Code Playgroud)

python curve-fitting power-law model-fitting data-fitting

6
推荐指数
1
解决办法
1179
查看次数

特征的名称和顺序对预测算法重要吗

我的 X_test 数据帧的列的名称/顺序是否必须与我用于拟合的 X_train 相同?

下面是一个例子

我正在训练我的模型:

model.fit(X_train,y)
Run Code Online (Sandbox Code Playgroud)

在哪里X_train=data['var1','var2']

但在预测过程中,当我使用:

model.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

X_test定义为:X_test=data['var1','var3']

其中var3可能是与 完全不同的变量var2

是否predict假设 与中的第二列var3相同?var2X_test

如果什么:

X_live被定义为:X_live=data['var2','var1']

预测会知道重新排序 X 以使它们正确排列吗?

python predict data-fitting

6
推荐指数
1
解决办法
3606
查看次数