• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Matlab
  • 标签:

资源简介

该资源是bp神经网络的一个matlab实现,该代码,经过测试可以跑通

资源截图

代码片段和文件信息

%BP算法,采用交叉验证
clc;
clear;
flag=0;
[NUM]=xlsread(‘样本数据.xls‘‘B2:I147‘);
[hw]=size(NUM);
group=zeros(h1);
train=zeros(h5);
train_exresult=zeros(h1);
test=zeros(h1);
test_result=zeros(h1);
for i=1:100   %训练集
    train(i1)=NUM(i3);   %身高
    train(i2)=NUM(i4);   %体重
    train(i3)=NUM(i6);   %喜欢数学
    train(i4)=NUM(i7);   %喜欢文学
    train(i5)=NUM(i8);   %喜欢运动
    train_exresult(i1)=NUM(i1);   %性别
end 
for i=101:h  %测试集
    test(i-1001)=NUM(i3);   %身高
    test(i-1002)=NUM(i4);   %体重
    test(i-1003)=NUM(i6);   %喜欢数学
    test(i-1004)=NUM(i7);   %喜欢文学
    test(i-1005)=NUM(i8);   %喜欢运动
    test_result(i-1001)=NUM(i1);   %性别
end

%对身高和体重进行数值归一化
max_h=train(11);min_h=train(11);
max_w=train(12);min_w=train(12);
for i=2:h
    if train(i1)>max_h
        max_h=train(i1);
    end
    if train(i1)        min_h=train(i1);
    end
    if train(i2)>max_w
        max_w=train(i2);
    end
    if train(i2)        min_w=train(i2);
    end
end
for i=1:h
    train(i1)=(train(i1)-min_h)/(max_h-min_h);
    train(i2)=(train(i2)-min_w)/(max_w-min_w);
end

%q = randi(h);   %随机选择数据

%随机产生输入层至隐层的权值范围(-0.3,0.3)
w11=rand(1)*0.6-0.3;w12=rand(1)*0.6-0.3;w13=rand(1)*0.6-0.3;w14=rand(1)*0.6-0.3;w15=rand(1)*0.6-0.3;
w21=rand(1)*0.6-0.3;w22=rand(1)*0.6-0.3;w23=rand(1)*0.6-0.3;w24=rand(1)*0.6-0.3;w25=rand(1)*0.6-0.3;
w31=rand(1)*0.6-0.3;w32=rand(1)*0.6-0.3;w33=rand(1)*0.6-0.3;w34=rand(1)*0.6-0.3;w35=rand(1)*0.6-0.3;
w41=rand(1)*0.6-0.3;w42=rand(1)*0.6-0.3;w43=rand(1)*0.6-0.3;w44=rand(1)*0.6-0.3;w45=rand(1)*0.6-0.3;
w51=rand(1)*0.6-0.3;w52=rand(1)*0.6-0.3;w53=rand(1)*0.6-0.3;w54=rand(1)*0.6-0.3;w55=rand(1)*0.6-0.3;
%随机产生隐层至输出层的权值,范围(-0.3,0.3)
v1=rand(1)*0.6-0.3;v2=rand(1)*0.6-0.3;v3=rand(1)*0.6-0.3;v4=rand(1)*0.6-0.3;v5=rand(1)*0.6-0.3;

for i=1:100 %训练100次
% while (flag==0)
%     count=1;
    for q = 1:100    %进行训练,前100为训练样本

%当前神经网络的实际输出
y1=1/(1+exp(-(w11*train(q1)+w21*train(q2)+w31*train(q3)+w41*train(q4)+w51*train(q5))));
y2=1/(1+exp(-(w12*train(q1)+w22*train(q2)+w32*train(q3)+w42*train(q4)+w52*train(q5))));
y3=1/(1+exp(-(w13*train(q1)+w23*train(q2)+w33*train(q3)+w43*train(q4)+w53*train(q5))));
y4=1/(1+exp(-(w14*train(q1)+w24*train(q2)+w34*train(q3)+w44*train(q4)+w54*train(q5))));
y5=1/(1+exp(-(w15*train(q1)+w25*train(q2)+w35*train(q3)+w45*train(q4)+w55*train(q5))));
y=1/(1+exp(-(v1*y1+v2*y2+v3*y3+v4*y4+v5*y5)));

% ex(q1)=y-exresult(q1);
% if (ex(q1)<1) & (ex(q1)>-1)
%     count=count+1; 
% end
%权值修正,步长取1
v1_1=v1+y*(1-y)*(train_exresult(q1)-y)*y1;
v2_1=v2+y*(1-y)*(train_exresult(q1)-y)*y2;
v3_1=v3+y*(1-y)*(train_exresult(q1)-y)*y3;
v4_1=v4+y*(1-y)*(train_exresult(q1)-y)*y4;
v5_1=v5+y*(1-y)*(train_exresult(q1)-y)*y5;
w11_1=w11+y1*(1-y1)*y*(1-y)*(train_exresult(q1)-y)*train(q1);w12_1=w12+y2*(1-y2)*y*(1-y)*(train_exresult(q1)-y)*train(q1);
w13_1=w13+y3*(1-y3)*y*(1-y)*(train_exresult(q1)-y)*train(q1);w14_1=

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6901  2016-10-19 21:44  bp神经网络matlab实现\BPalgorithm.m

     文件       2033  2016-10-19 21:46  bp神经网络matlab实现\SVM.m

     文件       1795  2016-10-19 21:48  bp神经网络matlab实现\Tree.m

    ..A.SH.       162  2016-10-19 12:58  bp神经网络matlab实现\~$识别第二次作业-打印.doc

     文件      39936  2016-09-21 09:30  bp神经网络matlab实现\样本数据.xls

     目录          0  2016-10-20 09:44  bp神经网络matlab实现

----------- ---------  ---------- -----  ----

                50827                    6


评论

共有 条评论