pythonの初歩的な質問です。
今、機械学習の本でパーセプトロンの実装するところを
勉強しておりますが、その中の記述で分からないところがあり
質問しました。
重みwを更新するところで、このソースだと
self.w_[1:] += update*xi
と正解値との誤差に説明変数のベクトルをかけて+=で
重みベクトルを更新しておりますが、
pythonのリストの説明には+=はappendと同じ機能があるとの事で、こちらでも
実際に行うと下記のような結果になっております。
In :a = [1,2,3]
b = [4,5]
a += b
a
out:
a = [1,2,3,4,5]
このソースはどのようにして
それぞれの重みの要素に値を追加しているのでしょうか?
初歩的ですがよろしくお願いします。
ソース
class Perceptron(object): def __init__(self,eta=0.01,n_iter=50,random_state=1): self.eta = eta self.n_iter = n_iter self.random_state = random_state def fit(self,X,y): rgen = np.random.RandomState(self.random_state) self.w_ = rgen.normal(loc = 0.0,scale = 0.01,size = 1 + X.shape[1]) self.errors_ = [] for _ in range(self.n_iter): errors = 0 for xi,target in zip(X,y): #updateはスカラー update = self.eta*(target - self.predict(xi)) self.w_[1:] += update*xi self.w_[0] += update*1 errors += int(update != 0.0) self.errors_.append(errors) return self def net_input(self,X): return np.dot(X,self.w_[1:]) + self.w_[0] def predict(self,X): return np.where(self.net_input(X) >= 0.0,1,-1)
回答1件
あなたの回答
tips
プレビュー