2017-02-13 34 views
0

データフレームとシリーズで次の数式を実行しようとしています。Pandasデータフレームとの逆行列

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は価格に対応します。

+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が返されますが、すべての値が数値なので上記の例は問題ありません。これらの行列でlinalg演算を実行することができます。

回帰設計行列(この例では変数X)の方向が気になります。設計行列はd * n行列であり、dは特徴の数であり、nは標本サイズである。 Y行列はn * 1 $行列です。ノーマル方程式で行列乗算を行うには、それらが正しく整列していることを確認する必要があります。

あなたは完全な機能を備えた線形回帰の多くを行う必要がある場合、あなたは私はあなたが何をしたいと思い、このようなStatsModels

+0

これは参考になります。 StatsModels sm.OLS(Y、X)を使用してコードを実行しようとしましたが、これはインターセプト、係数1と2(私はtheta0、theta1と2と呼んでいます)とほぼ同じ値を示しました。私は自分の機械学習を磨いています。 – sunny

関連する問題