Matlab实现BP神经网络

来源:互联网 发布:中银淘宝校园卡注销 编辑:程序博客网 时间:2024/05/19 15:22

该实现为《数据挖掘》课程的一次作业。数据在http://www.kaggle.com/网站上,所以数据为CSV格式。但BP神经网络算法为最一般的实现,所以有参考价值。

close all  %关闭打开的文件clear      %清除内存中的数据echo on    %显示执行的每一条命令clc        %清除命令行窗口pause      %敲任意键开始 %定义训练样本 %P为输入矢量,注意最后的转置为了保证输入矢量与目标矢量的列数相同。%P为384*10000矩阵P = csvread('C:\Users\Administrator\Desktop\train.csv',1,2)';%T为目标矢量,注意最后的转置为了保证输入矢量与目标矢量的列数相同。%T为1*10000矩阵RNG = [1, 1, 10000, 1];T = csvread('C:\Users\Administrator\Desktop\train.csv',1,1, RNG)';%创建一个新的前向神经网络 %传递函数包括tansig、purelin、logsig%newff旧的使用方法,会有warningnet=newff(minmax(P),[20,1],{'logsig','purelin'},'traingdm')%设置训练参数 net.trainParam.show = 100;          %100个迭代显示收敛曲线变化net.trainParam.lr = 0.05;           %学习速率为0.05net.trainParam.mc = 0.9;            %网络中设置动量因子为c=0.9 ?net.trainParam.epochs = 10000;      %最大训练次数为10000net.trainParam.goal = 1e-3;         %训练精度为1e-3%调用 TRAINGDM 算法训练 BP 网络 [net,tr]=train(net,P,T); %读取测试数据Q = csvread('C:\Users\Administrator\Desktop\test.csv',1,1)';%对BP网络进行仿真 A = sim(net,Q);%生成所需格式N=10000       %数组长度B=zeros(1,N)  %定义一个长度为N的数组A(数组A为一行形式的数组),并将每个元素值初始化为0for num=1:N   %循环给A的每个元素值初始化为num*2B(num)=num;endR = [B; A]';%写入信息csvwrite('C:\Users\Administrator\Desktop\result.csv', R, 1, 0);pause clc echo off 

实现过程如上所示,下面解释一下所用到的函数。

(1)csvread

第一种:M = csvread('FILENAME') ,直接读取csv文件的数据,并返回给M,这时要求整个csv文件内容全部为用逗号隔开的数字,不能用其他字符。
第二种:M = csvread('FILENAME',R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。
第三种:M = csvread('FILENAME',R,C,RNG),其中 RNG = [R1 C1 R2 C2],读取左上角为索引为(R1,C1) ,右下角索引为(R2,C2)的矩阵中的数据。


(2)newff

第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。
第二个参数是一个设定每层神经元个数的数组。
第三个参数是包含每层用到的传递函数名称的细胞数组。
最后一个参数是用到的训练函数的名称。


(3)train
[net,tr] = train(net,X,T,Xi,Ai)
net

Network

X

输入矢量

T

目标矢量(default = zeros)

Xi

Initial input delay conditions (default = zeros)

Ai

Initial layer delay conditions (default = zeros)

and returns

net

New network

tr

Training record (epoch andperf)


(4)网络层数的选择,传递函数的选择,训练参数的选择尚待研究。


Reference:
1. 新版Matlab中神经网络训练函数Newff的使用方法
    http://blog.sina.com.cn/s/blog_64b046c70101cko4.html
2. matlab newff使用
    http://hi.baidu.com/topman8023/item/42248e3820a6baf396f88d09
3. 怎样从matlab中读取csv文件
    http://blog.sina.com.cn/s/blog_46e9b2010100u6gb.html
4. Matlab Documentation


0 0
原创粉丝点击