我在python中建模一些数据时遇到了麻烦。我想改进我目前使用的非常粗略的方法:
x = np.linspace(-1, 1, 130)
y = np.linspace(0, 0.5, 113)
data = np.random.rand(130, 113)
X, Y = np.meshgrid(x,y)
X1 = X.flatten()
Y1 = Y.flatten()
Z1 = data.flatten()
根据这些数据,我试图拟合一个模型:
A2 = np.array([X1**3, Y1**3, (X1**2)*Y1, (Y1**2)*X1,
X1**2, Y1**2, X1*Y1, X1, Y1, X1*0+1]).T
c2, r2, rank2, s2 = np.linalg.lstsq(A2, Z1)
tst_z2 = c2[0]*(X**3) + c2[1]*(Y**3) + c2[2]*((X**2)*Y)
+ c2[3]*((Y**2)*X) + c2[4]*(X**2) + c2[5]*(Y**2) + c2[6]*(X*Y)
+ c2[7]*X + c2[8]*Y + c2[9]*X*0+1
我使用的模型是标准的二元三次多项式,我输入了所需的所有项。如果我想使用四次或更高阶多项式并移动到具有三个或更多自变量的数据,那么这种方法将很快变得无法使用。
有没有办法简化/概括这个方法而不必写出所有的术语,这样我就可以转向更高阶的多项式?
对于问题的更多上下文,我正在尝试生成一个适合此data的模型:
红橙色表面是我尝试使用二元三次多项式拟合数据。如果有人知道更好的方法,我会非常感谢你的帮助。