Investigación sobre la previsión de redes neuronales RBF
Borrar todo;
x =[];
t =[];
x(1)= 0,22; p>
p>
k = 4;
n = 900
N = 400
Se genera una secuencia lógica, siendo la primera 100 eliminados.
Para i=1: n
x(I 1)= k * x(I)*(1-x(I));
Fin
x(1:800)= x(101:900);
Utilice los primeros 400 datos de x para entrenar la red neuronal RBF
Para j =1 :N
P(1:8,j)=X(j:j7)';
Fin
t = X(9:408 ) ;Datos de destino
net1=newrb(P, T, 0.001, 1); Entrenamiento de red neuronal RBF
n 1 = 300;
Seleccione 400 de Datos X -700 para pruebas de redes neuronales RBF.
Para j=1: N1
P1(1:8,j)= X(j 400:j 7 400)';
Fin p> p>
t 1 = con una red simulada.
e = t 1-a; error de predicción de un paso
Mse = sqrt(e*e')/size(e, 2) error cuadrático medio
Haz un dibujo para representar los resultados de la simulación
Figura (2)
plot(X(1:200));
Eje ([1 200 -0.1 1.1]);
Title('secuencia del caos logístico');
xlabel(' t ');
ylabel('magnitud');
p>
Figura (3)
plot(1:300, T1, ' b ', 1:300, a, ' r * '); >
H = Leyenda ('Secuencia del caos', 'Valor de predicción de un paso de la red neuronal RBF');
Eje ([1 300-0.5 1.5]);
Continuar
Título ('Secuencia del caos y valor de predicción de un paso');
xlabel(' t ');
ylabel('magnitud');
Figura (4) ;
plot(e,' b-');
Eje([1 300-0.02 0.02]);
Title('Error de predicción e');
xlabel(' t ');
ylabel('magnitud'); Agrupación de k-means:
Uno de los algoritmos RBF más básicos, el algoritmo de aprendizaje utiliza funciones pseudoinversas.
Borrar todo ;
Cerrar todo;
clc
Definir las variables utilizadas
r = 1 Radio del dominio, configuración manual
nodenum = 0; el número de nodos de capa ocultos está determinado por los datos reales y r***
datos de entrada =[]; "; ruta de almacenamiento de los datos de entrada originales
nodo de salida =[]; matriz de entrada de capa oculta
netout =[]; matriz de salida de red
peso=[ ]; genera la matriz de peso, que es el único peso.
núm de entrada = 0; porcentaje de dimensión de entrada
núm de salida = 0; dimensión de salida
centro =[]; num train = 0; número de muestras de aprendizaje
fila = 0; número de muestras de aprendizaje
sim fila = 0; porcentaje de todas las muestras
numtest = 0; ; número de muestras de generalización
Fuerza = 1; el rango utilizado en la normalización suele ser 1.
yout =[]; valor esperado de la salida
Inicialización de variables
r = 1;
número de entrada = 9;
ruta de entrada = 'e:\yinjia\data\años un dat';
número de salida = 1;
simrow. = 290
source=load(input path);
Guarde una copia del código fuente como preparación para la desnormalización.
copysource = fuente
Procesamiento de normalización
fuente=normalize(fuente, intensidad);
yout = fuente(entrada número 1: número de entrada de fila sim);
inputdata=phasespace(fuente, número de entrada, fila sim);
fila = 250
numtrain = fila
numtest = sim row-row;
Establezca la variable de entrada de la primera persona en el centro inicial
Después de la inicialización, la posición del centro no cambiará.
center=inputdata(1,:)';
Se inició un clúster simple.
La idea básica es: dado un radio de vecindad fijo, los puntos dentro del radio de vecindad del punto central se consideran como
puntos en la vecindad para puntos fuera del radio. Utilice el; primer punto que no esté dentro del radio como el nuevo punto central.
Diseña una función iscenter para calcular si un punto es el punto central.
Para el paso=2: línea
if iscenter(inputdata(step,)',center,r)
center=[center inputdata(step,) '];
nodenum = nodenum 1;
finalizar este fin es el centro (datos de entrada (paso,))
El final del paso = 2 este end :row
Porcentaje de finalización de agrupación.
Preparar el cálculo directo de la red neuronal.
[fila central nodenum]= tamaño(centro);
Inicialización de red
nodeout=zeros(fila,nodenum);
netout=zeros(fila, número de salida);
peso=zeros(nodenum, número de salida);
Cálculo de red
Para el paso=1: línea
Para el paso 1=1: nodenum
nodeout(paso, paso 1) = GaussRadialBasisFunction(datos de entrada(paso,:)',. ..
centro(:, paso1), r);
finalizar este final para el paso=1: nodenum
finalizar este final para el paso=1: fila p>
Utilice pseudoinverso para calcular el peso
peso = pinv(node out)* yout(1:250);
Porcentaje utilizado para la simulación
Para el paso=1: simrow
Para el paso 1=1: nodenum
nodeout(paso, paso 1)= GaussRadialBasisFunction(input data(step,:)',...
center(:, step1), r);
end El final de este paso es 1= 1: nodenum
finalice este extremo para el paso = 1: fila sim
mydata = nodeout * peso
Desnormalización
mydata=unnomal (misdatos, fuente de copia, fuerza);
datos rl = copiar fuente (entrada número 1: entrada número fila sim);
trazado(datos rl espera); , ' r ');
Calcular una función de evaluación
rmsetest =(norm(rl data(num train 1:simrow)-my data(num train 1:simrow)). ..
^2/(numtest-1))^0.5
Hay varios programas pequeños que deberías poder escribir tú mismo.