首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError使用lmfit.Model.fit()

KeyError使用lmfit.Model.fit()
EN

Stack Overflow用户
提问于 2020-07-15 23:07:05
回答 1查看 527关注 0票数 2

对于一个相当基本的问题,我很抱歉,但是我很难理解lmfit的语法,并且无法想出为什么会出现这个错误。具体而言,错误是:

"KeyError:‘通量’“

我知道它需要某种类型的字典对象,但仍然看不到与我的代码和lmfit文档不一致的地方。

我创建了一个函数,作为某个发行版的模型。我想使用这个模型来适应实际的数据分布。这个分布是被绑定的数据,因此,我得到了中点的回收箱作为x轴数据点使用。

代码语言:javascript
复制
def flemming(flux,alpha,fhalf):

    a = alpha*np.log10(flux/fhalf)
    b = np.sqrt(1+a**2)
    return (1/2)*(1+(a/b))

def f20func(flux,alpha,fhalf):

    return flemming(flux,alpha,fhalf) - 0.2

def modified(flux,alpha,fhalf):

    flem = flemming(flux,alpha,fhalf)
    f20 = fsolve(f20func,fhalf/2,args=(alpha,fhalf))
    tau = 1 - np.exp(-flux/f20)

    return flem**(1/tau)


def powerlaw(flux,beta,c):

    return c*flux**(-beta)


def distribution(flux,alpha,fhalf,beta,c):
    return powerlaw(flux,beta,c)*modified(flux,alpha,fhalf)

n_bins = 40
    
    
y_data, bin_edges, patches = plt.hist(flux,bins=n_bins,ec='black')
    
i = 0
  
midpoints = []
   
while i < len(bin_edges)-1:
    midpoints.append((bin_edges[i+1]+bin_edges[i])/2)
        
    i+=1
    
    
model = Model(distribution)
    
    
    
aegis_params = model.make_params()
aegis_params['alpha'].set(value=3.4,min=3.0,max=3.8)
aegis_params['fhalf'].set(value=3.9,min=3.5,max=4.4)
aegis_params['beta'].set(value=3.5,min=3.2,max=3.8)
aegis_params['c'].set(value=45000.0,min=0.0)
    
    
best_fit = model.fit(y_data,params=aegis_params,x=midpoints)
EN

回答 1

Stack Overflow用户

发布于 2020-07-16 01:14:08

我认为你看到的问题是因为你使用了:

代码语言:javascript
复制
   best_fit = model.fit(y_data,params=aegis_params,x=midpoints)

但是您的模型函数( distribution())没有定义x,而是有一个名为flux的自变量。我猜你想

代码语言:javascript
复制
   best_fit = model.fit(y_data, params=aegis_params, flux=midpoints)

默认情况下,模型函数的第一个参数将被视为自变量,所有其他位置参数和那些带有数字默认值的关键字参数都将被转换为参数。

为了明确起见,您可以有多个独立变量,它们可以位于第一个参数以外的位置,并且名称x一点也不特殊。另外:自变量传递到您的模型函数,而不需要强制或检查数据类型,因此可以是复杂的对象或数据结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62925034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档