Python 使用Pandas和Curve_fit error func()进行外推需要3个位置参数,但给出了4个

Python 使用Pandas和Curve_fit error func()进行外推需要3个位置参数,但给出了4个,python,pandas,scipy,extrapolation,Python,Pandas,Scipy,Extrapolation,我正在使用另一篇文章中的代码来推断值。我更改了func(),使其为线性而非立方,但出现了一个错误“func()接受3个位置参数,但给出了4个” 是我得到原始代码的地方。我的问题是,当使用以下命令时,我将如何更改它,使其与线性关系一起工作: guess=(0.5,0.5) 你应该可以让它运行 您拥有参数a、b,而您拥有参数a、b、c、d。 最初的猜测是针对函数中的参数a、b,而不是x 用于运行插值函数的完整代码: def func(x,a,b): return a*x + b gu

我正在使用另一篇文章中的代码来推断值。我更改了func(),使其为线性而非立方,但出现了一个错误“func()接受3个位置参数,但给出了4个”

是我得到原始代码的地方。我的问题是,当使用以下命令时,我将如何更改它,使其与线性关系一起工作:
guess=(0.5,0.5)
你应该可以让它运行

您拥有参数
a、b
,而您拥有参数
a、b、c、d
。 最初的猜测是针对函数中的参数
a、b
,而不是
x

用于运行插值函数的完整代码:

def func(x,a,b):

    return   a*x + b

guess = (0.5,0.5,0.5)


fit_df = df.dropna()

col_params = {}

for col in fit_df.columns:

    x = fit_df.index.astype(float).values

    y = fit_df[col].values

    params = curve_fit(func,x,y,guess)

    col_params[col] = params[0] 
for col in df.columns:

    x = df[pd.isnull(df[col])].index.astype(float).values

    df[col][x] = func(x,*col_params[col])
print("Extrapolated data")
print(df)   
使用时:
guess=(0.5,0.5)
你应该可以让它运行

您拥有参数
a、b
,而您拥有参数
a、b、c、d
。 最初的猜测是针对函数中的参数
a、b
,而不是
x

用于运行插值函数的完整代码:

def func(x,a,b):

    return   a*x + b

guess = (0.5,0.5,0.5)


fit_df = df.dropna()

col_params = {}

for col in fit_df.columns:

    x = fit_df.index.astype(float).values

    y = fit_df[col].values

    params = curve_fit(func,x,y,guess)

    col_params[col] = params[0] 
for col in df.columns:

    x = df[pd.isnull(df[col])].index.astype(float).values

    df[col][x] = func(x,*col_params[col])
print("Extrapolated data")
print(df)