下面的代码似乎正确地找到了梯度下降:

def gradientDescent(x, y, theta, alpha, m, numIterations):
    xTrans = x.transpose()
    for i in range(0, numIterations):
        hypothesis = np.dot(x, theta)
        loss = hypothesis - y
        cost = np.sum(loss ** 2) / (2 * m)
        print("Iteration %d | Cost: %f" % (i, cost))
        # avg gradient per example
        gradient = np.dot(xTrans, loss) / m
        # update
        theta = theta - alpha * gradient
    return theta

现在假设我们有以下样本数据:

machine-learning - 理解多元线性回归的梯度下降python实现-LMLPHP

对于第一行样本数据,我们将有:x = [2104, 5, 1, 45] , theta = [1,1,1,1] , y = 460
但是,我们没有在行中指定:
hypothesis = np.dot(x, theta)
loss = hypothesis - y

要考虑样本数据的哪一行。那么这段代码怎么能正常工作呢?

最佳答案

首先:恭喜您在 Coursera 上学习机器学习类(class)! :)
hypothesis = np.dot(x,theta) 将同时计算所有 x(i) 的假设,将每个 h_theta(x(i)) 保存为一行 hypothesis 。所以不需要引用单行。
loss = hypothesis - y 也是如此。

关于machine-learning - 理解多元线性回归的梯度下降python实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33629734/

10-12 13:54