[学习笔记]人工智能-感知器分类算法
2018-01-14 16:31
344 查看
感知器分类算法
学习笔记来源https://www.imooc.com/video/14376
1.算法框架
很喜欢这个图机器学习就是不断更新权重和阈值的过程
2.感知器算法适用范围
感知器算法适用于线性分割3.算法步骤
3.1 权重向量初始化为 0
步调函数和阈值权重向量W,训练样本X
其中W(0)是阈值的取负数,X(0) 初值 1
W(1)….W(x)初值设置为0
[公式]Z = w0 * 1 + W1*X1 + ….+ Wn * Xn
# 神经元 def net_input(self, x): ''' [公式]Z = w0 * 1 + W1*X1 + ....+ Wn * Xn ''' return np.dot(x, self.w_[1:]) + self.w_[0] pass
初始化权重向量
-------------------------------------------------- ''' fit 输入训练数据,培训神经元 x 表示 输入样本向量 y 表示样本分类 x:shape[n_samples, n_features] x:[[1,2,3], [4,5,6]] n_samples 向量个数 2 n_features 向量中的神经元个数 3 y:[1, -1],1对应[1,2,3], -1对应[4,5,6] ''' def fit(self, x, y): # 初始化权重向量 # x:[[1,2,3], [4,5,6]] 得 x.shape[1] = 2,+1 w0 步调函数的阈值 self.w_ = np.zeros(1 + x.shape[1]) self.errors_ = [] --------------------------------------------------
预测函数
# 预测函数 def predict(self, x): if self.net_input(x) >= 0.0: np.where(1) else: np.where(-1) pass
3.2 训练样本输入感知器
权重更新算法学习率需要往往需要根据经验和场景自己设置。
# 训练次数 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): ''' Ps:公式 = 学习率 * (输入样本的正确分类 - 预测感知样本的分类) * xi ''' update = self.eta * (target - self.predict(xi)) ''' xi 是一个向量 update * xi 等价于 [∇w(1) = x[1] * update] w_[1:] 忽略掉第 0 个元素,从第 1 个元素开始 ''' self.w_[1:] += update * xi
3.2 更新权重向量
权重和阈值更新示例相关文章推荐
- Mahout学习笔记-分类算法之Decision Forest (2012-10-19 14:23)
- 预排序遍历树算法(非递归无限极分类算法)学习笔记
- 预排序遍历树算法(非递归无限极分类算法)学习笔记
- 【算法学习笔记】81.动态规划 分类讨论 SJTU OJ 1075 括号匹配升级
- 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm
- Mahout学习笔记-分类算法之Decision Forest
- 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm
- [学习笔记]人工智能-神经网络对数据进行分类-可视化
- 分类算法之感知器学习算法PLA 和口袋算法Pocket Algorithm
- Hadoop学习笔记二 - kNN算法实现用户风险分类
- [学习笔记]人工智能-神经网络对数据进行分类,构建二维矩阵
- 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm
- 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm
- 人工智能,机器学习,深度学习算法,深度学习遥感分类研究者
- [学习笔记]分类算法之朴树贝叶斯
- 【ML学习笔记】13:k-近邻算法做数值特征分类
- 算法学习笔记之一阶低通滤波算法
- msp430学习笔记-实现开方log等计算及FFT算法(待续)
- 大数据学习笔记之五十 推荐算法的距离算法和相似度算法
- 【算法学习笔记】70.回文序列 动态规划 SJTU OJ 1066 小M家的牛们