微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用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 举报,一经查实,本站将立刻删除。