由于睡眠的周期相对来说是没有规律可循的,所以用神经网络对一个晚上的睡眠分期进行训练,然后预测另一个晚上的睡眠分期。你可以考虑用anfis自适应神经网络来预测。
现举例说明,如何使用anfis自适应神经网络来预测。
x = (0:01:10)';
y = sin(2x)/exp(x/5);
epoch_n = 20;
in_fis = genfis1([x y],5,'gbellmf');
out_fis = anfis([x y],in_fis,epoch_n);
plot(x,y,x,evalfis(x,out_fis));
legend('Training Data','ANFIS Output');
xlabel('x'),ylabel('y');
P=[。。。];输入T=[。。。];输出
% 创建一个新的前向神经网络
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')
% 当前输入层权值和阈值
inputWeights=net_1IW{1,1}
inputbias=net_1b{1}
% 当前网络层权值和阈值
layerWeights=net_1LW{2,1}
layerbias=net_1b{2}
% 设置训练参数
net_1trainParamshow = 50;
net_1trainParamlr = 005;
net_1trainParammc = 09;
net_1trainParamepochs = 10000;
net_1trainParamgoal = 1e-3;
% 调用 TRAINGDM 算法训练 BP 网络
[net_1,tr]=train(net_1,P,T);
% 对 BP 网络进行仿真
A = sim(net_1,P);
% 计算仿真误差
E = T - A;
MSE=mse(E)
x=[。。。]';%测试
sim(net_1,x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
不可能啊 我2009
附件是一个电力系统负荷预测的BP神经网络预测案例,所有数据都已经归一化,可以直接运行。
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
BP神经网络预测的步骤:
1、输入和输出数据。
2、创建网络。fitnet()
3、划分训练,测试和验证数据的比例。netdivideParamtrainRatio; netdivideParamvalRatio;netdivideParamtestRatio
4、训练网络。 train()
5、根据图表判断拟合好坏。ploterrcorr();parcorr();plotresponse()
6、预测往后数据。net()
7、画出预测图。plot()
执行下列命令
BP_prediction
得到结果:
[ 2016, 14749003045557066798210144042969]
[ 2017, 15092847215188667178153991699219]
[ 2018, 15382150005970150232315063476562]
[ 2019, 1539885769711434841156005859375]
[ 2020, 15491935150090605020523071289062]
matlab本列式排列即列应本本误输入8输2神经中国络作图直接用plot函数 参考附件代码电力负荷预测例matlab编程 BP(Back Propagation)神经中国络种按误差逆传播算训练层前馈中国络目前应用广泛神经中国络模型BP中国络能习存贮量输入-输模式映射关系需事前揭示描述种映射关系数程习规则使用速降通反向传播断调整中国络权值阈值使中国络误差平BP神经中国络模型拓扑结构包括输入层(input)、隐层(hidden layer)输层(output layer
function [f1,f2]=forcast_neural(x1,y1,x2)
% 此函数用神经网络进行预测
% x1: 训练输入
% y1: 训练输出
% x2: 测试输入
% 将输入输出数据进行归一化处理;
x1=x1';y1=y1';x2=x2';
warning('off')
[p,minp,maxp,t,mint,maxt]=premnmx(x1,y1);
x22=tramnmx(x2,minp,maxp);
% pr确定各输入变量的最大最小值;[8,r]分别表示各层神经元的个数,8代表因层,r代表输出层;{}中定义传递函数的类型
netw=newff(minmax(p),[8,1],{'tansig','purelin'},'trainlm');
%将网络netw赋给net
net=netw;
%定义网络训练误差
err=0001;
nettrainParamgoal=err;
%定义学习效率,学习效率非常重要:过大,调整步伐也大,影响训练效果;太小,算法收敛的时间就会增加
nettrainParamlr=03;
%定义最大训练步数
nettrainParamepochs=2000;
%定义显示的间隔
nettrainParamshow=50;
%训练神经网络
netw=train(net,p,t);
%对训练好的样本进行检验
s1=sim(netw,p); %对网络进行仿真检验,得到网络的输出
%%进行预测
%输出
s2=sim(netw,x22);
%将归一化的数据转换为原始数据
[f1] = postmnmx(s1,mint,maxt);
[f2] = postmnmx(s2,mint,maxt);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)