使用python和numpy来计算正则化损失函数的梯度

时间:2017-10-08 20:55:45

标签: python numpy machine-learning linear-regression

我有以下公式:

RLF

我正在尝试在函数中使用来计算正则化损失函数的梯度。我有dataSet,这是[(x(1), t(1)), ..., (x(n), t(n))]的数组,并且有训练数据n = 15

到目前为止,我知道损失函数是vector here.

def gradDescent(alpha, t, w, Z):
    returned = 2 * alpha * w
    y = []
    i = 0
    while i < len(dataSet):
        y.append(dataSet[i][0] * w[i])
        i+= 1
    return(returned - (2 * np.sum(np.subtract(t, y)) * Z))

问题是,w始终等于(M + 1) - 而在dataSet中,t等于15。这导致了越界乘法。我计算公式错了吗?有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

我相信你搞砸了你对数据集数组的索引。还要确保您的数组实际上定义为数组而不是列表。我相信列表索引像list [i] [j]和数组索引像array [i,j]。

所以我会通过以下方式运行你的数据对象:

import numpy as np
dataSet=np.asarray(dataSet)

然后用while循环替换你的while循环:

while i < len(dataSet):
        y.append(dataSet[i,0] * w[i])
        i+= 1