2017-08-25 95 views
2

我正在使用Numpy執行線性迴歸,並且遇到了用於計算模型的斜率'm'和截距'b'的方程之一的問題。通過在線課程後,由老師完成的實施產生了正確的結果,但不容易理解。我無法理解這個實現。使用Numpy的線性迴歸

計算斜率'a'和截取'b'的公式。

等式

的簡化版本現在使用利用numpy的函數,以便實現這個等式的代碼:

denominator = X.dot(X) - X.mean() * X.sum() 
a = (X.dot(Y) - Y.mean() * X.sum())/denominator 
b = (Y.mean() * X.dot(X) - X.mean() * X.dot(Y))/denominator 

在此代碼的第1行:X.dot(X)計算總和平方X但不是平均值。公式顯示X^2的平均值。

爲什麼要乘以X.mean()* X.sum()來計算X的平方均值?

爲什麼只用X.dot(X)來計算平方X的均值?方程2狀態均值(xy)-mean(x)*平均值(y)/分母用於計算a。代碼的狀態(x dot y) - mean(y)* sum(x)/分母在哪裏?爲什麼?

謝謝

+1

使用方程的簡化版本嘗試在分子和分母中使用1/N這個術語。您將自己回答:) 請注意,X.mean()等同於X. sum()* 1/N –

回答

0

這是一個方程的只是一個數學運算。在這裏你可以找到簡化版本的步驟,以在代碼中使用的一個:

enter image description here

需要b的操作是非常相似的。