首页 > 解决方案 > python中矩阵函数的非线性曲线拟合

问题描述

我有以下问题。我有一个称为 Z(x; t) 的 N x N 实矩阵,其中 x 和 t 通常可能是向量。我有 N_s 个观察值 (x_k, Z_k), k=1,..., N_s 并且我想找到参数 t 的向量,它可以在最小二乘意义上更好地逼近数据,这意味着我想要 t 最小化

S(t) = \sum_{k=1}^{N_s} \sum_{i=1}^{N} \sum_{j=1}^N (Z_{k, ij} - Z(x_k; t) )^2

这通常是矩阵函数的非线性拟合。我只找到必须拟合不能立即推广到矩阵函数(也不是向量函数)的标量函数的示例。我尝试使用 scipy.optimize.leastsq 函数、包 symfit 和 lmfit,但我仍然无法找到解决方案。最终,我最终编写了自己的代码......感谢任何帮助!

标签: nonlinear-optimizationnon-linear-regression

解决方案


您可以对多维数据进行曲线拟合。据我所知,没有一个低级算法明确支持多维数据,但它们确实最小化了最小二乘意义上的一维数组。拟合方法并不真正关心“自变量” x,只是它们可以帮助您计算要最小化的数组 - 可能是计算模型函数以匹配y数据。

也就是说:如果您可以编写一个函数来获取参数值并计算要最小化的矩阵,只需将该二维(on nd)数组展平为一维。合身不会介意。


推荐阅读