小编Sma*_*789的帖子

将 Pandas DataFrame 传递给 Scipy.optimize.curve_fit

我想知道使用 Scipy 来拟合 Pandas DataFrame 列的最佳方法。如果我有一个包含列 ( A, B, C, Dand Z_real)的数据表 (Pandas DataFrame),其中 Z 取决于 A、B、C 和 D,我想拟合每个 DataFrame 行(系列)的函数,该函数对 Z 进行预测(Z_pred)。

要拟合的每个函数的签名是

func(series, param_1, param_2...)
Run Code Online (Sandbox Code Playgroud)

其中 series 是对应于 DataFrame 每一行的 Pandas 系列。我使用 Pandas 系列,以便不同的函数可以使用不同的列组合。

我试过将 DataFrame 传递给scipy.optimize.curve_fit使用

curve_fit(func, table, table.loc[:, 'Z_real'])
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,每个 func 实例都将整个数据表作为其第一个参数而不是每一行的 Series 传递。我也尝试将 DataFrame 转换为 Series 对象列表,但这导致我的函数被传递了一个 Numpy 数组(我认为是因为 Scipy 执行了从 Series 列表到 Numpy 数组的转换,它不保留 Pandas系列对象)。

python mathematical-optimization scipy model-fitting pandas

2
推荐指数
1
解决办法
1万
查看次数