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]
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]