将多项式曲面拟合到3D数据集

时间:2017-12-18 18:48:27

标签: python model-fitting

是否有方法将某​​些功能(表示某些2D表面)拟合到3D数据集?

我假设表面在一个方向上具有5度而在另一个方向上具有3度。

所以我将函数f(x,y)= [poly function]拟合到某些数据集X,Y和Z.

1 个答案:

答案 0 :(得分:0)

我认为symfit包可以解决这个问题。它是我写的一个包,它将scipysympy合并。为了解决你的问题,我会做这样的事情:

from symfit import Poly, variables, parameters, Model, Fit

x, y, z = variables('x, y, z')
c1, c2 = parameters('c1, c2')
model_dict = {z: Poly( {(1, 2): c1, (4, 5): c2}, x ,y)}
model = Model(model_dict)
print(model)

>>> z(x, y; c1, c2) = Poly(c2*x**4*y**5 + c1*x*y**2, x, y, domain='ZZ[c1,c2]')

所以在这种情况下,我用两个系数做了多项式,代表xy中的两个混合顺序项。

现在我可以使用

将这个多项式拟合成一些数据
fit = Fit(model, x=xmesh, y=ymesh, z=zdata)
fit_result = fit.execute()

其中xmesh和ymesh表示坐标的网格。很容易就是馅饼!

有关详情,请查看symfit文档以及sympy文档以获取有关Poly的更多信息。可以找到一些如何使用symfit网格网格的完整功能示例代码{。{3}}。