2017-02-11 34 views
3

愚かな質問かもしれませんが、私は2つのデータフレームを乗算しようとしています.1つは100x2の形(100行と2列)で、もう1つは2x1の形です。最初のデータフレーム(頭部のみを印刷し、100行2列、すなわちX0およびX1を有する)である: -Python Pandasデータフレームを使った乗算

X0  X1 
0 1  6.1101 
1 1  5.5277 
2 1  8.5186 
3 1  7.0032 
4 1  5.8598 

他のデータフレームはパラメータベクトル&でIは2列0とシータを呼び出し、そして1.

Theta=pd.DataFrame(np.zeros((1, 2))) 
print("printing initialized Theta:\n",Theta) 

出力あなたはそれがサイズ1×2である見ることができるように=

0   1 
0 0.0  0.0 

です。今、私はこのシータデータフレームの転置を取ると、それは次のようになります。

theta1=theta.transpose() 
print("printing theta transponse:\n",theta1) 

結果は次のとおりです。 -

0 
0 0.0 
1 0.0 

しかし、私が使用してTheta1と、この最初のデータフレームXを掛けたとき:

predict=X.mul(theta1,axis=1) 

出力は(ヘッドのみを印刷しています)

X0   X1 0 
0 0.0   0.0 0.0 
1 0.0   0.0 0.0 
2 0.0   0.0 0.0 
3 0.0   0.0 0.0 
4 0.0   0.0 0.0 
(100, 3) 

あなたが100x1であると予想していたとき、今は100x3のデータフレームになっています。 データフレームのように見えますが、行列乗算に基づいてすべてを乗算することはできません。それをどうやって得るのですか?私はそれをnumpy.matrixに変換し、次に行列乗算を行うべきですか?

答えて

0

2つの障害点。

  1. あなたはdotないmul
  2. ThetaのインデックスがXと一致していない使用します。だからThetaの列名をXの列名と一致させる必要があります。

この代わりに

Theta.columns = X.columns 
X.dot(Theta.T) 

    0 
0 0.0 
1 0.0 
2 0.0 
3 0.0 
4 0.0 
+0

.dor uは(実際にはあなたはめったにそれを必要としない).valuesを必要としません揃えてみてください。それは慣用的ではありません – Jeff

+1

あなたの最後の部分は慣用的な方法です.valuesを使用することは、単に慣用的ではなく、ほとんど使用するべきではありません。 – Jeff

+0

@Jeff入手しました。私はそれに応じて答えを調整します。 – piRSquared

関連する問題