2017-08-25 114 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的操作是非常相似的。