欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

最基本的感知器算法

发布时间:2024/9/18 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 最基本的感知器算法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
import numpy as npclass Perceptron(object):"""eta: 学习率n_iter: 权重向量的训练次数w_: 神经分叉权重向量errors_: 用于记录神经元判断出错次数"""def __init__(self, eta = 0.01, n_iter = 10):self.eta = etaself.n_iter = n_iterpassdef fit(self, X, y):"""输入训练数据,培训神经元,X表示输入样本, y对应该样本的正确分类X: shape[n_samples, n_features]n_samples:表示有多少个训练样本数量n_features: 表示有多少个属性例如:X: [[1,2,3], [4,5,6]] => n_samples=2;n_features=3y: [1, -1]表示第一个向量的分类是1, 第二个向量的分类是-1""""""首先初始化权重为0加一是因为激活函数w0的阈值"""self.w_ = np.zero(1 + X.shape[1])self.errors_ = []for _ in range(self.n_iter): errors = 0"""X:[[1,2,3], [4,5,6]]y:[1, -1]zip(X, y) => [[1,2,3,1], [4,5,6-1]]"""for xi, target in zip(X,y):"""update = η * (y-y')"""update = self.eta * (target - self.predict(xi))"""xi 是一个向量update 是一个常量update*xi 等价于 [Δw(1) = X[1]*update, Δw(2) = X[2]*update, Δw(3) = X[3]*update]"""# w_[1:]表示w忽略第0个元素,从第一个元素开始往后self.w_[1:] += update * xiself.w_[0] += updateerrors += int(update != 0.0)self.errors_.append(errors)passpassdef net_input(self, X):"""z = W0*1 + W1*X1 + W2*X2+ ...+ Wn*Xn"""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)

 

总结

以上是生活随笔为你收集整理的最基本的感知器算法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。