from itertools import count
import numpy
import random  #用到的库。step_function = lambda x: 1 if x>=0 else 0   #是创建一个 step 函数,充当感知器的激活函数。输入小于0,则该函数将返回0;反之,它将返回1。td = [(numpy.array([1,1,1]), 0),(numpy.array([1,0,0]), 1),(numpy.array([0,1,0]), 1),(numpy.array([0,0,1]), 0),
]#建立数据集,每个元组的第二个元素表示预期的结果,第一个元素的第三个元素是偏置。def training(td):#训练感知器学习算法w = numpy.random.rand(3)#生成一个3列的0到1范围的随机数作为初始权重向量random.seed(1)# 设置随机数种子lr = 0.2 # 设置下学习效率  but这个不知道怎么设置比较好n = 200 # 设置训练次数为200a = 0for i in range(n):x, e = random.choice(td)# 从数据集中随机选取一个子集x作为训练集,e为所要得到的0 or 1.r = numpy.dot(w, x)+a# 结果;w为权重,在不断的迭代中权重向量不断修正err = e - step_function(r)# 误差的计算w1 =lr * err * x  #w1是权重的更新值用误差err乘以学习速率lr和输入向量xw += w1# 有助于我们计算校正因子此时的w是最新权重a = a + lr * err#为下一次修正err_array = []for x, y in td:#对每一个数据集进行训练r = numpy.dot(x, w)+aerr_val = y - step_function(r)err_array.append(err_val)return err_arraycount = 0
for i in [0,1]:for j in [0,1]:for l in [0,1]:for k in [0,1]:b = [i,j,k,l]#列出所增加维度即a,b,c,d的所有可能结果,并分别进行训练for t in range(4):td[t][0][2] = b[t]err_array = training(td)#调用训练的感知器算法if err_array == [0,0,0,0]:#如果误差均为0,则b值可用count += 1#计算线性可分总组数print(b)       print('线性可分的总组数为:{}'.format(count))
#在这个程序中感知器算法的核心是感知器将向量x作为输入,将其乘以相应的权重向量w,然后将其添加到偏差b中。即代码中r = numpy.dot(w, x)+a//
#然后,输出通过激活函数step_function传递,以映射所需值之间的输入//
#再不断利用训练数据集进行迭代,修正权重向量w。//
#最后再来用训练得到误差为0的分类后的数据(没有误分的意思)来解决这样一个不是线性可分函数的问题

感知器算法解决xor函数相关推荐

  1. 人工神经网络—感知器算法的意义

    感知器算法的意义 1. 回顾 2. 感知器算法的意义 2.1 机器学习算法的框架的提出 2.2 框架的介绍 2.3 感知器算法的优势 3. 结尾 参考资料 1. 回顾 在上一讲中,我们讲到了Rosen ...

  2. Perceptron Algorithm 感知器算法及其实现

    Rosenblatt于1958年发布的感知器算法,算是机器学习鼻祖级别的算法.其算法着眼于最简单的情况,即使用单个神经元.单层网络进行监督学习(目标结果已知),并且输入数据线性可分.我们可以用该算法来 ...

  3. ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)

    ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem) 目录 输出结果 实现代码 输出结果 实现代码 #BP solve XOR Problem im ...

  4. 机器学习——人工神经网络之发展历史(神经元数学模型、感知器算法)

    目录 一.神经元的数学模型 ​ 二.感知器算法(SVM算法前身) 1.目的 2.流程 >>>问题1:下图w和b的调整是什么意思? 3.算法的有效性验证 1)原算法 2)增广矩阵 3) ...

  5. 【基础机器学习算法原理与实现】使用感知器算法LDA、最小二乘法LSM、Fisher线性判别分析与KNN算法实现鸢尾花数据集的二分类问题

    本文设计并实现了PerceptronLA.PseudoIA.LeastSM.LinearDA.KNN等五个算法类,以及DataProcessor的数据处理类.对感知器算法LDA.最小二乘法LSM的伪逆 ...

  6. 感知器算法(Perceptron)

    目录 引言 感知器 Matlab代码 效果展示 Python代码 效果展示 C++代码 效果展示 引言 本专栏第二个机器学习算法:感知器算法,全部代码通过Github下载,使用Matlab,Pytho ...

  7. 感知器算法原理详解及python实现

    感知器算法PLA 感知器算法是对一种分类学习机模型的称呼,属于有关机器学习的仿生学领域中的问题,由于无法实现非线性分类而下马.但"赏罚概念(reward-punishment concept ...

  8. 【模式识别】C++实现感知器算法

    一.问题描述 编写一个感知器算法程序,用此程序求解下列模式分类的解向量: ω1:{(0 0 0),(1 0 0),(1 0 1),(1 1 0)} ω2:{(0 0 1),(0 1 1),(0 1 0 ...

  9. 机器学习(十二)——感知器算法

    感知器算法是一种可以直接得到线性判别函数的线性分类方法,它是基于样本线性可分的要求下使用的 线性可分与线性不可分 算法流程 感知器作为人工神经网络中最基本的单元,有多个输入和一个输出组成.虽然我们的目 ...

最新文章

  1. 用cookie实现保存密码
  2. JUC里面的相关分类|| java并发编程中,关于锁的实现方式有两种synchronized ,Lock || Lock——ReentrantLock||AQS(抽象队列同步器)
  3. 聊一聊Jmeter的参数化
  4. SQL随机生成6位数字
  5. 宝宝安全座椅什么牌子好?[自己参考]
  6. 实验四 用信号量解决进程互斥与同步问题 生产者与消费者问题模拟
  7. norton服务器 位置,逐步配置企业版Symantec Norton防病毒服务器
  8. Serializer及ModelSerializer的使用
  9. div+css+js实现深圳交互地图
  10. 答题卡php,答题卡答题注意事项 - 窗外事 - 简单学习网论坛_中高考学习交流论坛_中学生学习论坛 - Powered by phpwind...
  11. 前端监控:回放录制库 rrweb
  12. mac linux 笔记
  13. Day2 QT常用基础类型(自用)
  14. 链接器lds文件简介
  15. 计算机带不动移动硬盘,家里电脑带不动?教你一招把steam游戏带到网吧里玩!...
  16. centos6如何添加阿里云centos和epel源
  17. 受疫情影响,超七成美国科技公司暂停招聘或裁员
  18. 计算机保研边缘er如何华丽逆袭?
  19. Mac和Ubuntu系统下.bash_profile和.bashrc文件
  20. undeclared name问题,一定要仔细啊

热门文章

  1. java刺客信条启示录_刺客信条启示录为什么叫启示录?
  2. 2021/8/12 老男孩带你21周搞定Go语言 (三)
  3. Linux设备驱动程序——PCI相关知识的学习
  4. VS Code安装VUE及创建VUE项目
  5. jquery.datepick日历控件
  6. 前端知识基础之Vue知识点串讲
  7. 游戏关卡,出入口技术2
  8. PHP中private什么意思,PHP中的private和public还有protected的区别
  9. Python 数字以规定格式化输出
  10. jumpserver通过局域访问内网服务器