fengdu78 / lihang-code

《统计学习方法》的代码实现
18.66k stars 6.26k forks source link

Perceptron 随机梯度下降问题 #23

Closed ckll closed 5 years ago

ckll commented 5 years ago

for d in range(len(X_train)): X = X_train[d] y = y_train[d] if y * self.sign(X, self.w, self.b) <= 0: self.w = self.w + self.l_rate*np.dot(y, X) self.b = self.b + self.l_rate*y wrong_count += 1 if wrong_count == 0: is_wrong = True 这样写是梯度下降,应该不是随机梯度下降,以下是修改后的随机梯度下降,请参考,如有误,还请指出: for d in range(len(X_train)): x = X_train[d] y = y_train[d] if y * self.sign(x, self.w, self.b) <= 0: wrong_index_list.append(d) if len(wrong_index_list) == 0: break else: index = random.randint(0, len(wrong_index_list) - 1) w_index = wrong_index_list[index] self.w = self.w + self.l_rate*np.dot(y_train[w_index], X_train[w_index]) self.b = self.b + self.l_rate*y_train[w_index]