数据挖掘——单层感知器的Matlab实现
来源:互联网 发布:淘宝详情图片怎么上传 编辑:程序博客网 时间:2024/05/16 06:02
% 单层感知器%% 1.newp--创建一个感知器%{具体用法:net=newp(P,T,TF,LF);P: P是一个R×2的矩阵,R为感知器中输入向量的维度,每一行表示输入向量每个分量的取值 范围如P=[-1,1;0,1]表示输入向量是二维向量[x1,x2],且x1∈[-1,1],x2∈[0,1]T: T表示输出节点的个数,标量TF: 传输函数,可选hardlim和hardlims,默认为hardlim,建议取hardlimsLF: 学习函数,可选learnp或learnpn,默认为learnp,learnpn对输入量大小的变化不明显, 当输入的向量在数值的幅度上变化较大用learnpn代替learnp可以加快计算速度%}%举个栗子:用newp函数创建一个感知器并进行训练仿真p=[-1,1;-1,1];t=1;net=newp(p,t,'hardlim','learnp');P=[0,0,1,1;0,1,0,1]; % 用于训练的输入数据,每列为一个输入向量T=[0,1,1,1]; % 输入数据的期望输出[net,tr]=train(net,P,T); %train用于训练newP=[0,0.9]'; %第一个测试数据newT=sim(net,newP); %第一个测试数据的输出结果newP2=[0.9,0.9]';newT2=sim(net,newP2);%% 2.train--训练感知器网络%{具体用法:[net,tr]=train(net,P,T,Pi,Ai); % train函数用来训练创建好的感知器网络输入:net: 需要训练的神经网络,此处为newp函数的输出. train根据net.trainFcn和net.trainParam进行训练P: 网络输入.P为R×Q的输入矩阵,每一列为一个输入向量, R等于网络的输入节点个数,共有Q个训练输入向量T: 期望输出.可选参数,不选默认全为0,T为S×Q矩阵,每一列为一个输出向量, S等于输出节点个数,共有Q个输出,Q为输入向量的个数Pi: 初始输入延迟,默认为0Ai: 初始的层延迟,默认为0输出:net: 训练好的网络tr: 训练记录,包括训练的步数epoch核性能perf%}% 举个栗子:创建一个感知器,用来判断输入数字的符号,如果≥0输出1,<0输出0p=[-1000,1000];t=1;net=newp(p,t);P=[-5,-4,-3,-2,-1,0,1,2,3,4];T=[0,0,0,0,0,1,1,1,1,1];net=train(net,P,T);newP=-10:.2:10;newT=sim(net,newP);plot(newP,newT,'LineWidth',3);title('判断数字符号的感知器');%% 3.sim--对训练好的网络进行仿真%{具体用法1: [Y,Pf,Af]=sim(net,P,Pi,Ai) % sim函数用于仿真一个神经网络具体用法2: [Y,Pf,Af,E,perf]=sim(...)输入: net: 训练好的神经网络 P: 网络的输入,每一列一个输入向量Pi: 网络的初始输入延迟,默认为0Ai: 网络的初始层的延迟,默认为0输出:Y: 网络对输入P的真实输出Pf: 最终输出延迟Af: 最终的层延迟E: 网络的误差perf: 网络的性能(Performance)%}% 举个栗子:创建感知器,实现逻辑与的功能,用sim仿真net=newp([-2,2;-2,2],1);P=[0,0,1,1;0,1,0,1];T=[0,0,1,1];net=train(net,P,T);Y=sim(net,P); %得到仿真结果Y2=net(P); %另一种得到仿真结果的方式%% 4.hardlim/hardlims--感知器传输函数%{hardlim核hardlims都是感知器的传输函数hardlim(x):返回1如果x>=0,返回0如果x<0hardlims(x):返回1如果x>=0,返回-1如果x<0newp函数中默认采用hardlim函数.如果要采用hardlims,net=newp(P,T,'hardlims')%}%% 5.init--神经网络初始化函数%{具体用法: net=init(net)init函数用来初始化神经网络net的权值和阈值%}% 举个栗子:观察感知器网络权值的变化net=newp([0,1;-2,2],1);net.iw{1,1} % 创建时的权值net.b{1} % 创建时的偏置P=[0,1,0,1;0,0,1,1];T=[0,0,0,1];net=train(net,P,T);net.iw{1,1}net.b{1}net=init(net);net.iw{1,1}net.b{1}net.initFcnnet.initParam % 当initFcn为initlay时,initParam自动为空,所以这一行会报错%% 6.adapt--神经网络的自适应%{具体用法: [net,Y,E,Pf,Af,tr]=adapt(net,P,T,Pi,Ai)输入:net: 待修正的神经网络P: 网络的输入T: 网络的期望输出Pi: 初始的输入延迟Ai: 初始的层延迟输出:net: 修正后的网络Y: 网络的输出E: 网络的误差Pf: 最终的输出延迟Af: 最终的层延迟Tr: 训练记录,包括epoch和perf参数T仅对需要目标的网络是必需的,Pi Pf Ai Af仅对有输入延迟或层间延迟的网络有意义%}%举个栗子:使用adapt函数调整感知器核其他神经网络net=newp([-1,2;-2,2],1);P={[0;0] [0;1] [1;0] [1;1]}T={0,0,1,1}[net,y,ee,pf]=adapt(net,P,T);ma=mae(ee) % 误差ite=0; % 迭代次数初始化while ma>=0.01 [net,y,ee,pf]=adapt(net,P,T); ma=mae(ee) newT=sim(net,P) ite=ite+1; if ite>=100 break; endend%adapt函数在线性神经网络中比较常用%% 7.mae--平均绝对误差性能函数%{具体用法: perf=mae(E) %取绝对值再求平均值其他性能函数: sse:平方再求和 mse:平方再求平均值 %}clear,clcnet=newp([-20,20;-20,20],1);P=[-9,1,-12,-4,0,5;15,-8,4,5,11,9];T=[0,1,0,0,0,1];net=train(net,P,T);Y=sim(net,P)iw=net.iw;b=net.b;w=[b{1},iw{1}] %w=[0,14,-6]表示分离直线为7x-3y=0
阅读全文
0 0
- 数据挖掘——单层感知器的Matlab实现
- 数据挖掘——单层感知器的Matlab实现
- 数据挖掘——单层感知器的Python实现
- 数据挖掘——单层感知器算法简介
- 单层感知器的MATLAB实现
- 单层感知器的MATLAB实现
- 数据挖掘——多层感知器的Python实现
- 单层感知器的python实现
- 数据挖掘——多层感知器手写体识别的Python实现
- C语言实现单层感知器
- 数据挖掘——线性神经网络的Matlab实现
- 机器学习/深度学习测试题(一) —— 单层感知器的激活函数
- 单层感知器的学习与练习
- 单层感知器
- 单层感知器神经网络
- 单层感知器
- 单层感知器
- [Matlab][数据挖掘算法][感知机]
- 静态链接器构造
- 消息中间件核心实体(0)
- 使用libvlc简单的播放一首本地音乐文件
- LeetCode-Find the Duplicate Number
- 刷紫书第三章习题(习题3-1到习题3-6)
- 数据挖掘——单层感知器的Matlab实现
- 《Thinking In Java》总结, 第二章:一切都是对象
- linux上安装git,并添加github SSHkeys
- net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- 每日一诗词 —— 题三义塔
- Java8系列之重新认识HashMap
- angularJs控制台报错之
- java鬼混笔记:shiro 4、shiro授权判断,基本ini配置
- Akka工作原理