这是显示如何可以
numpy.linalg.lstsq用于此任务的示例:
import numpy as npx = np.linspace(0, 1, 20)y = np.linspace(0, 1, 20)X, Y = np.meshgrid(x, y, copy=False)Z = X**2 + Y**2 + np.random.rand(*X.shape)*0.01X = X.flatten()Y = Y.flatten()A = np.array([X*0+1, X, Y, X**2, X**2*Y, X**2*Y**2, Y**2, X*Y**2, X*Y]).TB = Z.flatten()coeff, r, rank, s = np.linalg.lstsq(A, B)
调整系数
coeff为:
array([ 0.00423365, 0.00224748, 0.00193344, 0.9982576 , -0.00594063, 0.00834339, 0.99803901, -0.00536561, 0.00286598])
请注意,
coeff[3]和
coeff[6]分别对应于
X**2和
Y**2,并且它们接近,
1.因为示例数据是使用创建的
Z = X**2 +Y**2 + small_random_component。



