Programa de predicción de población de redes neuronales bp (implementación de Matlab)
x=[54167
55196
56300
57482
58796
60266
61465
62828
64653
65994
67207
66207
65859
67295
69172
70499
72538
74542
76368
78534
80671
82992
85229
87177
89211 90859 92420 93717 94974 96259 97542 98705
100072
101654
103008
104357
105851
107507
109300
111026
112704
114333
115823 p>
111026
112704
114333
115823
p>
117171
118517
119850
121121
122389
123626
124761
125786
126743
127627
128453
129227
129988
130756
131448
132129
132802
134480
135030
135770
136460
137510]';
Este script se utiliza para la predicción de redes neuronales NAR
Autor: Macer Cheng
lag= 3; orden autorregresivo
iinput=x; x es la secuencia original (vector de fila)
n=length( iinput
Preparar datos de entrada y salida;
inputs=zeros(lag, n-lag);
para i=1:n-lag
inputs(:,i)=iinput(i :i lag-1)';
end
objetivos=x(lag 1:end);
Crear red
hiddenLayerSize = 10; número de neuronas en la capa oculta
net = fitnet(hiddenLayerSize);
Mediante entrenamiento y pruebas Divida los datos de validación proporcionalmente para evitar el sobreajuste
net.divideParam.trainRatio = 70/100;
net.dividParam.valRatio = 15/100;
net.dividParam.testRatio = 15/100;
Red de formación
>
[net, tr] = train(net, inputs, target);
Juzga el ajuste según los gráficos
yn = net(inputs); p>errores = target-yn;
figure.ploterrcorr(error)?trazar autocorrelación de errores (20lags)
figura, parcorr(errors)?trazar caso de correlación parcial
[h, pValue, stat, cValue]= lbqtest(errors) Prueba Q de Ljung-Box (20lags)
figura, plotresponse(con2seq(targets), con2seq(yn)) mira lo predicho tendencia vs tendencia original
figura, ploterrrhist(errores)?Histograma de error
figura, plotperform(tr)?línea desplegable de error
La predicción hacia atrás se predice a continuación período de tiempo
fn=7;? Predecir el número de pasos para fn.
f_in=iinput(n-lag 1: end)';
f_out=zeros(1, fn);? Salida de predicción
Para varios pasos predicción, vuelva a ingresar la salida de la red usando el siguiente bucle
para i=1: fn
f_out(i)=net(f_in);
f_in =[f_in( 2: end); f_out(i)];
end
Dibujar gráfico de predicción
figure, plot(1949: 2013, iinput, 'b', 2013:2020, [iinput(end), f_out], 'r')
Figura 1 correlación automática
Figura 2 error
Figura 3 predice el programa anterior. Es versátil y puede modificarse para otras aplicaciones si lo desea. La idea básica es utilizar la población del año de retraso anterior para predecir la población del año siguiente. En cuanto al número de años de retraso, puede cambiarlo usted mismo. Además, a la hora de juzgar los resultados, no basta con mirar el gráfico de error. Si la predicción es buena, los coeficientes de autocorrelación en el gráfico de autocorrelación no deben exceder los intervalos de confianza superior e inferior, excepto para la autocorrelación de orden 0. Hay otras estadísticas y gráficos escritos después de "", elimínelos si es necesario. El resultado final de la predicción es f_out, y mi resultado de predicción es
138701.065269972 139467.632609654 140207.209707364 141210.109373609 141981.285378849 142461.332139592 43056.073139776