Python
【慕课】Python 实现人工神经网络 - part.2 自适应线性神经元
2018/5/20
·
0
·
profile photo
这篇文章是我在慕课网课程 机器学习-实现简单神经网络 是的学习笔记与老师讲课内容的整理,主要整理了算法的数学表达式部分,使用 LaTeX 进行了重新排版并通过 Katex 渲染,感兴趣并需要的同学可以查看文章的源码以获取
notion image

距离的定义

  • 和方差公式

渐进下降法 (梯度下降)

notion image

和方差求偏导数

神经元参数更新

class AdalineGD(object): """ eta: float 学习效率,[0, 1] n_iter: int 对训练数据进行学习改新的次数 w_: 一维向量 存储权重数值 error_: 一维向量 存储每次迭代改进是,网络对数据进行错误判断的次数 """ def __init__(self, eta=0.01, n_iter=50): self.eta = eta self.n_iter = n_iter def fit(self, X, y): """ X: 二维数组 [n_sampls, n_features] n_smapls 表示 X 中含有训练数据条目数 n_features 含有 4 个数据的一维向量,用于表示一条训练条目 y: 一维向量 用于存储每一条训练条目对应的正确分类 """ self.w_ = np.zeros(1 + X.shape[1]) self.cost_ = [] for i in range(self.n_iter): output = self.net_input(X) errors = (y - output) self.w_[1:] += self.eta * X.T.dot(errors) self.w_[0] += self.eta * errors.sum() cost = (errors ** 2).sum() / 2.0 self.cost_.append(cost) def net_input(self, X): return np.dot(X, self.w_[1:]) + self.w_[0] def activation(self,X): return self.net_input(X) def predict(self, X): return np.where(self.activation(X) >= 0, 1, -1)
ada = AdalineGD(eta=0.0001, n_iter=50) ada.fit(X, y) plot_decision_regions(X, y, classifier=ada) plt.title('Adalin-Gradient descent') plt.xlabel('花径长度') plt.ylabel('花瓣长度') plt.legend(loc='upper left') plt.show()
notion image
plt.plot(range(1, len(ada.cost_) + 1), ada.cost_, marker='o') plt.xlabel('Epochs') plt.ylabel('sum-squard-error') plt.show()
notion image