2017-02-13 218 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