人们曾在自身的神经元得到启发,将机器学习中给出的特征输入与权重之积作为输出与阈值作比较,得到0或者1的输出。

这就是我们感知器的实现原理

感知器在实现过程中的步骤如下:

①将权值初始化称为一个很小的向量

②迭代训练所有样本:

计算输出值output

更新权重

更新权重的公式如下:

w = eta*(output-answer)*feature

这里的eta为学习效率

output为我们的预测值(对于感知器来说只有-1 或者 1)

answer正确输出

feature对应样本的向量

我们可以简单推导

如果输出为1,答案为1,权重不变

如果输出为1,答案为-1,权重降低,下次输出偏向-1

如果输出为-1,答案为-1,权重不变

如果输出为-1,答案为1,权重增加,下次输出偏向1

具体实现可以由如下代码生成:

import numpy as np
class Predicter(object):"""Parameters:eta:学习效率 floatn_iter:迭代次数 intw_:权值 向量errors_:每次迭代的错误数量 向量"""def __init__(self, eta=0.1, n_iter=10):self.eta = etaself.n_iter = n_iterdef get_calculate(self, X):""""得到预测结果"""return np.dot(self.w_[1:], X)+self.w_[0]def predict(self, X):"""输出为对应值"""return np.where(self.get_calculate(X) >= 0.0 ,1 , -1)def fit(self, X, y):""":param X: 二维向量,大小【样例数,特征数】-代表训练集信息:param y: 一维向量,大小【样例数】-代表标准结果:return: self"""self.w_ = np.zeros(1+X.shape[1])self.errors_ = []for _ in range(self.n_iter):error = 0for xi,target in zip(X, y):update = self.eta*(target-self.predict(xi))self.w_[1:] += update*xiself.w_[0] += updateerror += int(update != 0)self.errors_.append(error)return self

运行环境为Python3 加载numpy库

这可以理解为简单的单层神经网络。

但是我们可以看出我们更新权重的过程中其实由输出和答案决定的参数只有-2 0 2这三种,对于权重的更新不够平滑,我们还有没有其他的分类器算法呢?

自适应神经元:

具体的实现就是我们原来一篇文章中讲过的梯度下降的方法:

再见灬不见:监督学习-回归​zhuanlan.zhihu.com

再见灬不见:多变量回归以及技巧​zhuanlan.zhihu.com

我们的Python代码:

import numpy as np
class Adaline(object):"""eta = 学习效率n_iter = 迭代次数get_calculate(X) 参数 :X[samples][features] 返回值:prediction[samples]fit(X,y) 参数:X[samples][features] y[sample] 返回值 selfpredict(X) 返回get_calculate(X)"""def __init__(self,eta = 0.01,n_iter = 100):self.eta = etaself.n_iter = n_iterdef get_calculate(self,X):return np.dot(X,self.w_[1:])+self.w_[0]def predict(self,X):return self.get_calculate(X)def fit(self,X,y):self.w_ = np.zeros(X.shape[1]+1)self.cost_ = []for _ in range(self.n_iter):ans = self.get_calculate(X)nabs_cost = y-ansself.w_[1:] +=self.eta*X.T.dot(nabs_cost)self.w_[0] += self.eta*nabs_cost.sum()abs_cost = (nabs_cost**2).sum()self.cost_.append(abs_cost)return self

但是我们思考一个问题,如果我们的样本数量非常的大,每次更新权值都要遍历所有的样本,我们采取一种新的策略:在每一个样本之后更新一次权值,这杨可以更快的更新权值。

机器学习分类算法_机器学习分类算法相关推荐

  1. 机器学习 凝聚态物理_机器学习遇到了凝聚的问题

    机器学习 凝聚态物理 为什么要机器学习? (Why machine learning?) Machine learning is one of today's most rapidly cutting ...

  2. 机器学习导论�_机器学习导论

    机器学习导论� Say you are practising basketball on your own and you are trying to shoot the ball into the ...

  3. 机器学习模型 非线性模型_机器学习:通过预测菲亚特500的价格来观察线性模型的工作原理...

    机器学习模型 非线性模型 Introduction 介绍 In this article, I'd like to speak about linear models by introducing y ...

  4. 【Matlab】智能优化算法_蜻蜓优化算法DA

    [Matlab]智能优化算法_蜻蜓优化算法DA 1.背景介绍 2.灵感 3.公式推导 3.1 勘探和开发操作 4.算法流程图 5.文件结构 6.伪代码 7.详细代码及注释 7.1 DA.m 7.2 d ...

  5. 【Matlab】智能优化算法_蚁狮优化算法ALO

    [Matlab]智能优化算法_蚁狮优化算法ALO 1.背景介绍 2.基本思想 3.公式推导 3.1 ALO算法的运算符 3.2 蚂蚁的随机游动 3.3 困在蚂蚁坑里 3.4 修建陷阱 3.5 蚂蚁划向 ...

  6. 【Matlab】智能优化算法_灰狼优化算法GWO

    [Matlab]智能优化算法_灰狼优化算法GWO 1.背景介绍 2.基本思想 2.1 等级制度 2.2 狩猎方式 3.公式推导 3.1 社会等级制度 3.2 包围猎物 3.3 包围猎物 3.4 攻击猎 ...

  7. 机器学习算法_机器学习算法中分类知识总结!

    ↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 译者:张峰,Datawhale成员 本文将介绍机器学习算法中非常重要的知识- ...

  8. k近邻算法_机器学习之K近邻分类算法的实现

    K近邻算法(k-nearest neighbors, KNN)是最基本的机器学习算法之一.所谓的K,就是距离最近的K个邻居的意思.其实,KNN在我们平常的生活中也会不自主的应用,比如,俗语说的&quo ...

  9. k近邻算法_机器学习分类算法之k近邻算法

    本编文章将介绍机器学习入门算法-k近邻算法,将会用demo演示机器学习分类算法. 在先介绍算法时,先回顾分类和回归的区别.像文章分类识别也是这样处理的,如1代表体育,2代表科技,3代表娱乐属于分类问题 ...

  10. 机器学习系列(4)_机器学习算法一览,应用建议与解决思路

    作者:寒小阳 时间:2016年1月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50469334 声明:版权所有,转载请联系作者并注明出 ...

最新文章

  1. 超棒的javascript移动触摸设备开发类库-QUOjs
  2. 怎么进行mysql注入测试_MySQL for Java的SQL注入测试
  3. 哪个银行的大额存款门槛最低?5万能买大额存单吗?
  4. POJ3666-Making the Grade【线性dp】
  5. gRPC基础--Protobuf编码格式详解
  6. vi定位到第一行,最后一行和任意行
  7. vue学习笔记(四)- cmd无法识别vue命令解决方法
  8. 数据驱动和关键字驱动
  9. [转载] comma.ai自动驾驶代码浅析及实践
  10. 壳的概念、LordPE的使用、C#读取PE文件初步
  11. vrep_Nao控制_学习记录
  12. LaTeX制作表格---学习笔记
  13. scikit-learn功能大全
  14. vue3组合式Composition API之ref函数的具体用法
  15. OCR表格识别(三)——文本检测与文本识别理论学习
  16. DOM元素 DAY17
  17. 员工出错处罚通知_关于处罚员工的通报
  18. Unity 解决SpriteAtlas图集打包AssetBundle白图问题
  19. python面向对象:光学元件类的实现
  20. 马尔代夫Robinson-友好亲切,流连忘返

热门文章

  1. Java 8的新增功能(第二部分–可能会出现什么)
  2. Spring MVC:带有CNVR卷的REST应用程序。 3
  3. 像Java这样的C ++具有低延迟
  4. 某些小时后MySql连接自动掉线
  5. jsp中request.getAttributeNames()报红
  6. jar/war/ear文件的区别
  7. Linux 命令之 sftp -- 交互式的文件传输程序
  8. flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...
  9. 快速排序 动图_Java十大排序算法最强总结
  10. sku设计mysql_基于spring boot拥有完整sku和下单流程的完全商城