问题描述
我的问题是,我有大约 50.000 个非线性数据点 (x,y,z),其中 z 取决于自变量 x 和 y。一方面,从二维的角度来看,数据点看起来像 7 次多项式。不幸的是,我无法显示这些数据。
我的目标是在 3D 中找到一个可以拟合这些数据的多项式,而无需事先知道多项式的次数。所以我想要一个函数 f(x,y) = ax^3 + bx^2 + cx^2y + dy^3 + ...
不幸的是,在 python 中,我只找到了表面拟合之类的东西,你需要事先获得学位。或者类似于使用 scikit-learn 将多项式问题转换为多变量线性问题。后者对我的数据集的结果非常糟糕。
有没有人知道解决这个问题的更好方法?非常感谢。
解决方法
就多项式拟合曲面而言,我认为最好的办法是尝试不同的多项式组并根据拟合度对它们进行排名,如here 所述。
如果您愿意尝试不同的曲面拟合方法,我建议您查看what scipy has to offer,particularly in the Multivariate,unstructured data section。例如,main.py
使用三次样条在数据点之间进行插值。请参阅以下代码以获取演示:
将 numpy 导入为 np
从 scipy.interpolate 导入网格数据
scipy.interpolate.griddata