我将尝试使用matplotlib对三维数据集(x、y、z)进行表面模型拟合。
其中,
因此,我会选择二次拟合方程:
其中,
z = f(x,y)
。因此,我会选择二次拟合方程:
f(x,y) = ax^2+by^2+cxy+dx+ey+f
到目前为止,我已经成功地使用最小二乘法绘制了3D拟合曲面,使用的方法如下:
# best-fit quadratic curve
A = np.c_[np.ones(data.shape[0]), data[:,:2], np.prod(data[:,:2], axis=1), data[:,:2]**2]
C,_,_,_ = scipy.linalg.lstsq(A, data[:,2])
#evaluating on grid
Z = np.dot(np.c_[np.ones(XX.shape), XX, YY, XX*YY, XX**2, YY**2], C).reshape(X.shape)
但是,我该如何打印/获取拟合曲面的方程(包括系数值)?
如果能给予一些帮助,我将不胜感激。
谢谢。
print 'f(x,y) = {:.2f}x^2+{:.2f}y^2+{:.2f}xy+{:.2f}x+{:.2f}y+{:.2f}'.format(C[4],C[5],C[3],C[1],C[2],C[0])
(但请确保我正确排序了系数)。另一种方法是:print 'f(x,y) = {4:.2f}x^2+{5:.2f}y^2+{3:.2f}xy+{1:.2f}x+{2:.2f}y+{0:.2f}'.format(*C)
。 - etna