我試圖運行使用numpy
的最小二乘算法,並且遇到了麻煩。有人可以告訴我在給定的代碼中我做錯了什麼嗎?當我將y設置爲y = np.power(X, 1) + np.random.rand(20)*3
或x的其他合理函數時,一切工作正常。但是對於那些由y值定義的特定y,我得到的情節是毫無意義的。最小二乘法不適用於一套y's
這是一種數值問題嗎?
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
X = np.arange(1,21)
y = np.array([-0.00454712, -0.00457764, -0.0045166 , -0.00442505, -0.00427246,
-0.00411987, -0.00378418, -0.003479 , -0.00314331, -0.00259399,
-0.00213623, -0.00146484, -0.00082397, -0.00030518, 0.00027466,
0.00076294, 0.00146484, 0.00192261, 0.00247192, 0.00314331])
#y = np.power(X, 1) + np.random.rand(20)*3
w = np.linalg.lstsq(X.reshape(20, 1), y)[0]
plt.plot(X, y, 'red')
plt.plot(X, X*w[0], 'blue')
plt.show()
嗯,首先,你可能想'X.dot(W [0])', –
非常感謝。我嘗試過,但我得到了同樣的結果。 –