使用scipy.optimize.curve_fit,多元回归,指数函数输入不正确

时间:2018-05-21 14:40:07

标签: python-3.x scipy curve-fitting

Data

df = pandas.read_csv(temp.csv, header=1)

def func(x1,x2,x3,a,b1,b2,b3,c):
    #return(a*np.exp(b1*x1)*np.exp(b2*x2)*np.exp(b3*x3)+c)
    return(a*np.exp(b1*x1) + b2*x2 + b3*x3 + c

def formula_tester(BIO, VAR1, VAR2, VAR3):
    X = scipy.array([VAR1, VAR2, VAR3])
    Y = scipy.array(BIO)
    popt, pcov = curve_fit(func, X, Y)
    return(popt)

Y = df['Biomass'] 
variable1 = df['F_cv']
variable2 = ln(df['F_d50'])
variable3 = ln(df['L_d50'])
parameters = formula_tester(Y, variable1, variable2, variable3)
parameters

这将返回错误消息

  

输入不正确:N = 7不得超过M = 3

我已阅读帮助和few Stack Overflow questions。先前的答案要么是正确的小错误,要么在尝试时证明无用(np.concatenate)。

使用try / except运行脚本,其中除了返回各种变量数组的长度之外,显示所有长度为162.N = 7来自何处?我确实认为我要求5个参数,而不是3.也许指数函数设置错误?

1 个答案:

答案 0 :(得分:2)

来自curve_fit的文件:

  

模型函数f(x,...)。它必须将自变量作为第一个参数,并将参数作为单独的剩余参数。

这里的自变量有三个组成部分。该模型应该看起来像

<button onclick=add()>1</button>
<button onclick=add()>1</button>
<button onclick=add()>1</button>