2017-02-13 129 views
0

我正在试图运行下面的公式与一个数据框和一系列。矩阵与熊猫数据帧相反

设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转置,inv表示反转。 我已经使用的代码是: -

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

就是上面是否正确?

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

+0

我猜你想要做的是OLS回归,看看这个:http://stackoverflow.com/questions/19991445/run-an-ols-regression-with-pandas-data-frame – FLab

+0

我想你是这样做的学习,但以防万一:[不要反转矩阵(https://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/)。 – chthonicdaemon

回答

1

看起来你想为自己的家庭作业或个人发展推出自己的OLS估算器,在这种情况下,你走在正确的轨道上,但这里有几件事需要记住。

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

您需要牢记的是您的回归设计矩阵(本例中为变量X)的方向。设计矩阵是一个d * n矩阵,其中d是特征的数量,n是样本大小。 Y矩阵是一个n * 1 $矩阵。为了在正常方程式中进行矩阵乘法,您需要确保它们正确对齐。

如果你需要做大量的全功能的线性回归的,你可能要考虑建立图书馆,如StatsModels

+0

这很有帮助。我尝试使用StatsModels sm.OLS(Y,X)来运行我的代码,并且它为截获提供了几乎相同的值,系数1和2(我称之为theta0,theta1和2)。我正在刷机器学习。 – sunny