使用SciPy的ODR时引发参数错误

问题描述

我正在使用SciPy的ODR例程来查找与统计数据的最佳相关性。过去我曾经使用过scipy.optimize中的curve_fit,但是在这种情况下,自变量和因变量都具有与之相关的错误,并且在这种情况下,我被告知使用ODR。

但是,当我运行例程时,会抛出错误。这是MWE:

import numpy as np
from scipy.odr import ODR,Model,RealData

# Define a linear function to fit.
def linear_func(x,a,b):
    return a * x + b

# Create an array to Feed into the linear function to create test data.
x_array = np.linspace(0,5,6)

# Create a y array of data.
y_array = linear_func(x_array,2,0.5)

# Define the data being fit.
data = RealData(x_array,y_array)

# Define the model being fit.
model = Model(linear_func)

# Define the ODR that will be used to fit the data.
odr = ODR(data,model,beta0=[1,1])
odr.set_job(fit_type=2)

# Run the model.
fit = odr.run()

运行此代码会产生以下错误,与我完全运行程序时收到的错误相同:

TypeError: linear_func() takes exactly 3 arguments (2 given)

我认为这与beta0 = [1,1]行有关,但是将其更改为beta0 = [1,1,1]仍会产生相同的错误,而beta0 = []确实如此。无论如何,线性函数中只有两个变量a和b,这是另一个混​​淆点。此设置可与curve_fit配合使用,因此我不知为何要解释为什么在此出现错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)