我正在参加机器学习的科学课程。我正在尝试将第一周的成本函数转换为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)
如果您需要更多信息,请与我们联系。
答案 0 :(得分:0)
你必须使用重塑来修复矩阵尺寸。我的解决方案就是那样
theta = theta - (alpha / m) * np.dot(X.T.reshape(2, 97), np.dot(X, theta).flatten() - y).reshape(2, 1)