【问题标题】:python curve_fit() error message only size 1 arrays can be converted to python scalarspython curve_fit() 错误消息只有大小为 1 的数组可以转换为 python 标量
【发布时间】:2023-03-17 08:25:01
【问题描述】:

我得到了以下等式,并要求我找出一些不同的东西,其中之一是最小二乘估计。

我有实验确定的数据并编写函数。

xData = np.array([0, 2, 5, 10, 15, 20, 25, 30]) # hours
yData = np.array([ 0.398,  0.543,  1.56,  4.34,  7.22, 9.86 , 10.5, 10.6]) # biomass, g/L

def func1(t,x_infin,x_0,k):
    'nonlinear function in a and b to fit to data'
    g = x_infin/ (1+(((x_infin-x_0)/x_0)*math.exp(-k*t)))
    
    return g

然后我设置curve_fit()

initial_guess = [10.5,0.0,16.5] # intial guesses for x_infin, x_0 and k
pars, pcov = curve_fit(func1, xData, yData, p0 = initial_guess)

得到

only size-1 arrays can be converted to Python scalars

我不确定我在哪里传递了一个不应该传递的数组。我对文档中的 curve_fit() 的理解是我传入了函数 xdata ydata 然后我对参数的猜测。

谁能指出我哪里出错了?

【问题讨论】:

    标签: python scipy statistics


    【解决方案1】:

    curve_fit 在做它的事情时使用 t 参数的底层数组。

    math.exp 仅适用于标量输入;使用numpy.exp 处理数组

    【讨论】:

    • 另外,请注意,您的猜测不是很好,因此得到的拟合会很差。请记住,指数项的失效率k 将显着影响您的函数增加的速度。对于较慢的增长,如您的数据中显示的那样,猜测k 的值要低得多(~0.5 可以)
    猜你喜欢
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 2021-10-17
    • 2018-07-22
    • 2021-07-08
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多