【发布时间】:2020-01-21 01:49:35
【问题描述】:
我正在研究线性回归编码问题,但在尝试对特征矩阵部分进行编码时出现此错误。你能帮我纠正一下吗?
Traceback(最近一次调用最后一次): 文件“C:\Users\visha\AppData\Local\Continuum\anaconda3\lib\site-packages\nose\case.py”,第 197 行, 在运行测试中 self.test(*self.arg) 文件“C:\Users\visha\machinelearning\test.py”,第 22 行,在 test_compute_Phi Phi = 计算_Phi(x,2) 文件“C:\Users\visha\machinelearning\linear_regression.py”,第 30 行,在 compute_Phi Phi[:,i] = np.power(x,i).reshape(x.shape[0],) ValueError: 无法将输入数组从形状 (1,3) 广播到形状 (3,1)
[代码]
def compute_Phi(x,p):
x = np.asmatrix(x)
Phi = np.zeros(shape = (x.shape[0],p))
for i in range(0,p):
Phi[:,i] = np.power(x,i).reshape(x.shape[0],)
Phi = np.asmatrix(Phi)
return Phi
【问题讨论】:
-
使用
np.asarray(x)。避免asmatrix -
你为 x 和 p 传递了什么值
-
嗨@Dev,在测试用例中,x 是 np.mat('1.;2.;3') 并且 p 是 2。
-
嗨@hpaulj,是的,我改变了它,但仍然给我同样的错误。
-
您将
Phi创建为二维ndarray。为什么在循环中通过np.matrix传递它?np.matrix在被索引时表现不同。这会产生混乱,这也是不鼓励在新代码中使用它们的部分原因。
标签: python numpy matrix linear-regression