numpy - 尝试计算成本函数时形状错误

时间:2017-12-25 04:52:24

标签: python numpy machine-learning

我正在参加机器学习的科学课程。我正在尝试将第一周的成本函数转换为python。

import numpy as np

def computeCost(X, y, theta):  
    inner = np.power(((X.dot(theta)) - y), 2)
    return np.sum(inner) / (2 * len(X))

它起初有效。然而,当我开始将其绘制到3D空间时,成本似乎不再起作用。

我跑了 print(computeCost(X, y, [theta0_vals[0], theta1_vals[0]]))

我得到“30109.7923098”但是,我应该得到“328.0929”

我试过了:

inner = np.power(((X * (theta.T)) - y), 2)
return np.sum(inner) / (2 * len(X))

我收到维度错误。

我试过了:

m = len(y)                  #number of training examples
#X = np.array([np.ones(m), X])      #I did this beofre calling the function
X = X.transpose()

theta = theta.transpose()
c = np.dot(X, theta)            #Matrix multiplication X*theta
c = c.transpose() - y
J = np.sum(c**2)/(2*m)          #Calculating cost
return J

我收到错误:ValueError:形状(2,97)和(1,2)未对齐:97(暗淡1)!= 1(暗淡0)

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

你必须使用重塑来修复矩阵尺寸。我的解决方案就是那样

theta = theta - (alpha / m) * np.dot(X.T.reshape(2, 97), np.dot(X, theta).flatten() - y).reshape(2, 1)