这可能是个愚蠢的问题,但我试图将两个数据序列相乘,一个是100x2形状( 100行和2列),另一个是2x1形状。第一个dataframe是(只打印头部,有100行和2列,即X0和X1):-
X0 X1
0 1 6.1101
1 1 5.5277
2 1 8.5186
3 1 7.0032
4 1 5.8598
另一个数据帧是参数向量&我称它为Theta,包含2列0和1。
Theta=pd.DataFrame(np.zeros((1, 2)))
print("printing initialized Theta:\n",Theta)
输出is=
0 1
0 0.0 0.0
如你所见,它的尺寸是1x2。现在,我将这个Theta数据框架转换成:
theta1=theta.transpose()
print("printing theta transponse:\n",theta1)
结果是:-
0
0 0.0
1 0.0
但是,当我使用Theta1将第一个dataframe相乘时,使用:
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,然后做矩阵乘法吗?
发布于 2017-02-11 16:01:33
两点失败。
dot
而不是 mul
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
https://stackoverflow.com/questions/42182663
复制