为了学习目的,我正在尝试使用梯度下降法从头开始实现线性回归。我的代码的一部分真的让我很烦。出于某种原因,在我运行一行代码后变量x
正在被更改,我不确定为什么。
变量如下。x
并且y
是 numpy 数组,我在这个例子中给了它们随机数。
x = np.array([1, 2, 3, 4, ...., n])
y = np.array([1, 2, 3, , ...., n])
theta = [0, 0]
alpha = .01
m = len(x)
代码是:
theta[0] = theta[0] - alpha*1/m*sum([((theta[0]+theta[1]*x) - y)**2 for (x,y) in zip(x,y)])
一旦我运行上面的代码x
就不再是一个列表了。它仅成为变量 n 或列表中的最后一个元素。