我正在尝试使用梯度下降法从零开始实现线性回归,以便学习目的。我的代码中有一个部分让我很困扰。由于某种原因,在运行一行代码后变量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或列表中的最后一个元素。