2017-08-25 15 views
2

私はNumpyを使って線形回帰を行い、モデルの傾き 'm'と切片 'b'を計算するために使用された式の1つに問題が発生しました。オンラインコースに続いて、教師によって行われた実装は正しい結果を生み出しましたが、理解するのは容易ではありませんでした。私はこの実装を理解できませんでした。Numpyを使った線形回帰

スロープ「a」とインターセプト「b」を計算する方程式。このコードの1行目に

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 

:X.dot(X)を算出する式

のバージョンnumpyの機能を使用してこの方程式を実装するために使用今コード簡易

Sum Squared Xであるが、平均ではない。方程式がX^2の平均を示すところで。

なぜX.mean()* X.sum()を乗算してXの二乗平均を計算するのですか?

なぜX.dot(X)は二乗平均Xを計算するのですか?

式2 aを計算するための平均(xy) - 平均(x)*平均(y)/分母。コード状態(x dot y) - 平均(y)* sum(x)/分母?どうして?

はそれが の方程式の単なる数学的な操作であるあなた

+1

簡略化された方程式を使用すると、分子と分母の中で1/Nという言葉を取ろうとします。あなた自身で答えるでしょう:) X.mean()はXと同じです。 sum()* 1/N –

答えて

0

ありがとうございます。ここでは、コード内で使用されるものに単純化されたバージョンからの手順を見つけることができます。

enter image description here

Bのために必要な操作は非常に似ています。