学習目的で最急降下法を最初から使用して線形回帰を実装しようとしています。私のコードの一部は本当に私を悩ませています。何らかの理由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またはリストの最後の要素のみになります。