次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、バッチ勾配降下法で X、y を学習し傾きと切片を予測してください.
また今回は、学習率を 0.1 として訓練してください.
(変数 eta、 gradients はそれぞれ学習率と勾配ベクトルを表しています.)
import numpy as np
np.random.seed(0)
X = 2 * np.random.rand(100,1)
y = 4 + 3 * X + np.random.rand(100,1)
# Q1:X の各インスタンスに x0 = 1 を加え、変数 X_b に代入してください.
X_b = ##########
eta = 0.1
iterations = 1000
m = len(X_b)
theta = np.random.randn(2,1)
for iteration in range(iterations):
#Q2:勾配を計算し変数 gradients に代入してください.
gradients = ##########
#Q3:変数 gradients を用いてモデルパラメータを更新してください.
theta = ##########
print(theta)
[Q1 の選択肢]
1. np.concat([np.ones((100,1), X])
2. np.c_([X, np.ones((100,1)])
3. np.c_([np.ones((100,1), X])
[Q2 の選択肢]
1. 2 * X_b.T.dot(X_b.dot(theta) – y)
2. 2/m * X_b.T.dot(X_b.dot(theta) – y)
3. 2/m * X_b.dot(X_b.dot(theta) – y)
[Q3 の選択肢]
1. theta – eta * gradients
2. eta – (theta + gradients)
3. (theta + eta) – gradients