Python機械学習プログラミング 達人データサイエンティストによる~
の第2章のパーセプトロンのプログラム中のPerceptronのクラスのdef fitの重み更新のところで、以下のようにi番目のΔw(update * xi)を、w[1:]のように1番目からすべての重みに対して加算しているのはなぜですか???w[i]+=update * xi
ではないのですか?
python
1import numpy as np 2 3class Perceptron(object): 4 def __init__(self, eta, n_iter, random_state = 1): 5 self.eta = eta 6 self.n_iter = n_iter 7 self.random_state = 1 8 9 def fit(self, X, y): 10 rgen = np.random.RandomState(self.random_state) 11 self.w_ = rgen.normal(loc=0.0, scale=0.01, size=1 + X.shape[1]) 12 self.errors_ = [] 13 14 for _ in range(self.n_iter): 15 errors = 0 16 for xi, target in zip(X, y): 17 update = self.eta * (target - self.predict(xi)) 18 print(self.w_[1:]) 19 self.w_[1:] += update * xi 20 self.w_[0] += update 21 22 errors += int(update != 0.0) 23 self.errors_.append(errors) 24 return self 25 26 def net_input(self, X): 27 return np.dot(X, self.w_[1:]) + self.w_[0] 28 29 def predict(self, X): 30 return np.where(self.net_input(X) >= 0.0, 1, -1) 31
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/11 08:37
2020/06/11 08:54 編集
2020/06/11 08:59
2020/06/11 09:04