与Pandas数据帧的矩阵逆

时间:2017-02-13 16:54:52

标签: python-3.x pandas dataframe

我正在尝试使用数据框和系列运行以下公式。

设X为3列数据帧。 (让它成为100x3矩阵)。 设y为向量(100x1矩阵) X:

    X0  sqrfeet  bedrooms   
0   1     2104         3  
1   1     1600         3  
2   1     2400         3  
3   1     1416         2  
4   1     3000         4 

Y:

0 20000
1 15000
2 24000
3 12000
4 14000

我想使用的公式是: - INV(X' * X)* X' * Y

这是正规方程的公式。 这里X'暗示X transpose和inv表示逆。 我使用的代码是: -

var= (np.linalg.inv((X.T).dot(X)))
var2= var.dot(X.T)
final=var2.dot(Y)

以上是否正确?

让X代表房屋大小和卧室数量的房地产数据 而Y对应价格。

1 个答案:

答案 0 :(得分:1)

看起来您想要将自己的OLS估算器用于家庭作业或个人发展,在这种情况下,您正走在正确的轨道上,但这里有几点需要注意。

Pandas DataFrame对象有一个方法as_matrix(),它返回DataFrame值的numpy矩阵。非数字值将产生NaN,但您的上述示例应该没有问题,因为所有值都是数字。您可以随心所欲地对这些矩阵执行linalg操作。

您需要记住的其他内容是回归设计矩阵的方向(本例中的变量X)。设计矩阵是d * n矩阵,其中d是特征的数量,n是样本大小。 Y矩阵是n * 1 $矩阵。为了使正规方程中的矩阵乘法起作用,您需要确保它们正确对齐。

如果您需要执行大量功能齐全的线性回归,您可能需要考虑已建立的库,例如StatsModels