numpy 梯度下降算法

xurqigkl  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(155)

我最近实现了一个线性回归的梯度下降代码。但是当我增加迭代次数时,我得到的是与迭代次数成比例的“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

zbsbpyhn

zbsbpyhn1#

梯度下降对特征的尺度很敏感。尝试缩放数据,例如减去平均值并除以标准差:

x = (x - np.mean(x)) / np.std(x)

字符串
这将稳定梯度计算,即使是单个特征。
另外,检查你的数学:通常你 * 减去 * alpha乘以梯度来更新权重。

相关问题