我最近实现了一个线性回归的梯度下降代码。但是当我增加迭代次数时,我得到的是与迭代次数成比例的“w”和“c”的值。有人能告诉我问题在哪里吗?你可以使用你的数据集来定义“x”和“y”
w = c = 0
alpha = 0.0001
y_calc = w * x + c
n = len(x)
p = float(n)
u = 0
for u in range(100000):
y_calc = w * x + c
w = w + alpha * ((1/p) * np.sum(l * (y - y_calc)))
c = c + alpha * ((1/p) * np.sum(y - y_calc))
u += 1
print(w,c)
个字符
预期w为1.389738813163012,c为0.03509461674147458
1条答案
按热度按时间zbsbpyhn1#
梯度下降对特征的尺度很敏感。尝试缩放数据,例如减去平均值并除以标准差:
字符串
这将稳定梯度计算,即使是单个特征。
另外,检查你的数学:通常你 * 减去 * alpha乘以梯度来更新权重。