Red de conocimiento informático - Computadora portátil - Programa de predicción de población de redes neuronales bp (implementación de Matlab)

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

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