梯度下降曲线拟合

时间:2019-05-19 16:06:44

标签: python numpy regression curve-fitting gradient-descent

我编写了一些对几个数据点执行梯度下降的代码。 由于某种原因,曲线无法正确收敛,但是我不知道为什么会这样。我总是以爆炸的尾巴结束。

我做错了其中一项计算吗?我是真的陷入了当地最低要求还是其他问题?

这是我的代码:

TimeSpan.Zero;

我想避免陷入最低限度。我曾尝试将初始权重设置为随机值,但无济于事,有时它会降低一些,但随后又给我相同的行为。

这是我得到的情节之一: enter image description here

这是最小二乘解获得的预期结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

您的estimate函数应为

def estimate(weights, x, order):
    est = 0
    for i in range(order+1):
        est += weights[i] * x ** i
    return est

更好的是,由于定单信息已经以weights向量的大小存在,因此请使用以下方法删除冗余:

def estimate(weights, x):
    est = 0
    for i in range(len(weights)):
        est += weights[i] * x ** i
    return est

这是使用您的代码并运行2000次迭代时得到的: enter image description here