数学家庭作业的多元回归Numpy

时间:2018-04-20 00:19:53

标签: python numpy machine-learning

我希望使用具有最小二乘法的多元回归作为我的成本函数来找到最适合(-2)的cos(x)的ax ^ 2 + bx + c的a,b,c。我的成本不会降低但是高得离谱 - 我做错了什么?

x = np.linspace(-2,2,100)
y = np.cos(x)

theta = np.random.random((3,1))
m = len(y)

for i in range(10000):
    #Calculate my y_hat
    y_hat = np.array([(theta[0]*(a**2) + theta[1]*a + theta[2]) for a in x])

    #Calculate my cost based off y_hat and y
    cost = np.sum((y_hat - y) ** 2) * (1/m)

    #Calculate my derivatives based off y_hat and x
    da = (2 / m) * np.sum((y_hat - y) * (x**2))
    db = (2 / m) * np.sum((y_hat - y) * (x))
    dc  = (2 / m) * np.sum((y_hat - y))

    #update step
    theta[0] = theta[0] - 0.0001*(da)
    theta[1] = theta[1] - 0.0001*(db)
    theta[2] = theta[2] - 0.0001*(dc)

    print("Epoch Num: {} Cost: {}".format(i, cost))

print(theta)

1 个答案:

答案 0 :(得分:0)

You're calculation of y_hat is slightly incorrect. It's currently a 2D array of shape (100,1).

This should help. It pulls the "zeroith" element from each of the rows:

theta_ = [(theta[0]*(a**2) + theta[1]*a + theta[2]) for a in x]
y_hat = np.array([t[0] for t in theta_])