clc
clear
close all
%---------------------------------------------------
% 产生训练样本与测试样本,每一列为一个判老袭尘样本
P1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2]
T1 = [repmat([100],1,5),repmat([010],1,5),repmat([001],1,5)]
P2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2]
T2 = [repmat([100],1,5),repmat([010],1,5),repmat([001],1,5)]
%---------------------------------------------------
% 归一化
[PN1,minp,maxp] = premnmx(P1)
PN2 = tramnmx(P2,minp,maxp)
%---------------------------------------------------
% 训练
switch 2
case 1
% 神经元数是训练样本个数
spread = 1 % 此值越大,覆盖的函数值就大(默认为1)
net = newrbe(PN1,T1,spread)
case 2
% 神经元数逐步增加,最多就是训练样本个数
goal = 1e-4 % 训练误差的平方和(默认为0)
spread = 1 % 此值越大,需要的神经元就越少(默认为1)
MN = size(PN1,2) % 最大神经元数(默认为训掘禅升练样本个数)
DF = 1% 显示间隔(默认为25)
net = newrb(PN1,T1,goal,spread,MN,DF)
case 3
spread = 1 % 此值越大,需要的神经元就越少(默认为1)
net = newgrnn(PN1,T1,spread)
end
%---------------------------------------------------
% 测试
Y1 = sim(net,PN1)% 训练样本实际输出
Y2 = sim(net,PN2)% 测试样本实际输出
Y1 = full(compet(Y1))% 竞争输出
Y2 = full(compet(Y2))
%---------------------------------------------------
% 结果统计
Result = ~sum(abs(T1-Y1)) % 正确分类显示为1
Percent1 = sum(Result)/length(Result) % 训练样本正确分类率
Result = ~sum(abs(T2-Y2)) % 正确分类显示为1
Percent2 = sum(Result)/length(Result) % 测试样本正确分类率
%% 清空环境变量clc
clear
close all
%%
a=load('walk1.txt')%读取数据 % xlsread(‘ ‘);读取execl文件
data=a(1:500,5)%样本数据和者闹测试数据
order=5%输入数据个数
snum=200%训练样本数
step=3%预测步数
input=data(1:snum)
output=data(1+order+step:snum+order+step)
delay=200%训练样本与测试样本间时延
input1=data(1+delay:snum+delay)
output1=date(1+order+delay+step:snum+order+delay+step)
input_train=zeros(snum,order)input_test=zeros(snum,order)
for i=1:snum
input_train(i,:)=data(i:i+order-1)
input_test(i,:)=data(i+delay:i+delay+order-1)
end
%% RBF神经网络预测
%% 网络建立和训练
net=newrb(input_train',output',0.001,100,300,25)
% net=newrbe(input_train',output',100)
% net=newgrnn(input_train',output'渗嫌没,10)
%% 网络验证
ty=sim(net,input_train')
errR=abs(output-ty')
ty1=sim(net,input_test')
errR1=abs(output1-ty1')
figure
plot(1:snum,output1,'r*-')
hold on
plot(1:snum,ty1','kx-')
title('丛纳三步RBF')
xlabel('数据序号')
ylabel('数据值')
legend('实际值','预测值')
figure
subplot(2,1,1)
stem(1:snum,errR1,'r*')
title('三步RBF')
xlabel('数据序号')
ylabel('绝对误差值')
rbfmean = mean(errR1)
subplot(2,1,2)
stem(1:snum,
abs(errR1./output1),'r*')
title('三步RBF')
xlabel('数据序号')
ylabel('绝对误差率')
rbfpmean = mean(abs(errR1./output1))*100%%
自己对着改一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)