matlabbp算法源码_matlab编程算法

hacker|
102

文章目录:

用matlab编BP神经网络预测代码

matlab编写BP神经网络很方便的,这个工作不用像编程序的C什么的那样还要编写算法

这个算法早已经在软件的库里提供了。你只要用一条语句就出来了。把参数,深度和节点固定的往里一代数就可以了。

还有一点,注意最后结果的收敛性,神经网络发展一直是曲折前进的,为什么这样,现在不太给力,因为面临着一个收敛的问题,实现起来效果不好。这些程序网上有很多,你借一本基本的神经网络的书里面也有。望采纳。

求BP网络预测的matlab代码

close all ;

clear ;

echo on ;

clc ;

% NEWFF——生成一个新的前向神经网络

% TRAIN——对 BP 神经网络进行训练

% SIM——对 BP 神经网络进行仿真

pause

% 敲任意键开始

clc

% 定义训练样本

% P 为输入矢量

p=[ ];

% T 为目标矢量

t= [];

%训练样本的归一化

for i=1:(训练样本的指标数)

P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));

end

pause

clc

% 创建一个新的前向神经网络

net=newff(minmax(P),[15,2],{'tansig','purelin'},'traingda'); %这些参数要自己设置

% 当前输入层权值和阈值

inputWeights=net.IW{1,1};

inputbias=net.b{1} ;

% 当前网络层权值和阈值

layerWeights=net.LW{2,1} ;

layerbias=net.b{2} ;

pause

clc

% 设置训练参数 也要自己设置

net.trainParam.show = 50;

net.trainParam.lr = 0.05;

%net.trainParam.mc = 0.9; % 附加动量因子

net.trainParam.epochs =5000;

net.trainParam.goal = 1e-4;

pause

clc

% 调用 TRAINGDM 算法训练 BP 网络

[net,tr]=train(net,P,t);

pause

clc

% 对 BP 网络进行仿真

p_test=[];

for i=1:6

P_test(i,:)=(p_test(i,:)-min(p_test(i,:)))/(max(p_test(i,:))-min(p_test(i,:)));

end

t_test=[];

A = sim(net,P_test)

% 计算仿真误差

E = t - A

error=mse(E)

pause

clc

echo off

%反归一化

for i=1:2

predict(i,:)=A(i,:)*(max(t(i,:))-min(t(i,:)))+ min(t(i,:));

end

predict %即仿真结果

pause

下图用matlab怎么编bp算法代码

%读取训练数据

[f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150);

%特征值归一化

[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]') ;

%构造输出矩阵

s = length( class) ;

output = zeros( s , 3 ) ;

for i = 1 : s

output( i , class( i ) ) = 1 ;

end

%创建神经网络

net = newff( minmax(input) , [10 3] , { 'logsig' 'purelin' } , 'traingdx' ) ;

%设置训练参数

net.trainparam.show = 50 ;

net.trainparam.epochs = 500 ;

net.trainparam.goal = 0.01 ;

net.trainParam.lr = 0.01 ;

%开始训练

net = train( net, input , output' ) ;

%读取测试数据

[t1 t2 t3 t4 c] = textread('testData.txt' , '%f%f%f%f%f',150);

%测试数据归一化

testInput = tramnmx ( [t1,t2,t3,t4]' , minI, maxI ) ;

%仿真

Y = sim( net , testInput )

%统计识别正确率

[s1 , s2] = size( Y ) ;

hitNum = 0 ;

for i = 1 : s2

[m , Index] = max( Y( : , i ) ) ;

if( Index == c(i) )

hitNum = hitNum + 1 ;

end

end

sprintf('识别率是 %3.3f%%',100 * hitNum / s2 )

看了你的数据,你至少要有的类标号吧,不知道你哪里是输入向量,哪里是输出向量

5条大神的评论

  • avatar
    访客 2022-07-16 下午 10:56:34

    g','purelin'},'traingda'); %这些参数要自己设置% 当前输入层权值和阈值 inputWeights=net.IW{1,1}; inputbias=net.b{1} ;% 当前网络层权值和阈值 layerWeig

  • avatar
    访客 2022-07-16 下午 08:19:05

    ose all ;clear ;echo on ;clc ;% NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 p

  • avatar
    访客 2022-07-16 下午 09:05:02

    (minmax(P),[15,2],{'tansig','purelin'},'traingda'); %这些参数要自己设置% 当前输入层权值和阈值 inputWeights=net.IW{1,1}; inputbias=net.b{1} ;% 当前网络层权值和阈值 layerWei

  • avatar
    访客 2022-07-16 下午 11:08:24

    p(i,:)))/(max(p(i,:))-min(p(i,:))); endpauseclc% 创建一个新的前向神经网络 net=newff(minmax(P),[15,2],{'tansig','purelin'},'traingda'); %这

  • avatar
    访客 2022-07-16 下午 06:51:57

    ax(P),[15,2],{'tansig','purelin'},'traingda'); %这些参数要自己设置% 当前输入层权值和阈值 inputWeights=net.IW{1,1}; inputbias=net.b{1}

发表评论