Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
PNN (Probabilistic Neural Network, red neuronal probabilística) es un modelo de red neuronal basado en la teoría de la probabilidad, que se utiliza principalmente para resolver problemas de clasificación. PNN fue propuesto por primera vez por Makovsky y Masikin en 1993. Es un algoritmo de clasificación muy eficaz.
El principio de PNN se puede resumir brevemente en los siguientes pasos:
PNN tiene las siguientes características:
En general, PNN es un algoritmo de clasificación muy eficaz y es adecuado para problemas de clasificación en diversos campos, como reconocimiento de imágenes, clasificación de texto, etc.
Hay tres vectores de entrada binarios X y sus clases asociadas Tc.
Cree una red neuronal probabilística para clasificar correctamente estos vectores.
La red neuronal probabilística (PNN) es una red de base radial adecuada para problemas de clasificación.
net = newpnn(P,T,spread)% acepta dos o tres parámetros y devuelve una nueva red neuronal probabilística.
PAG:Matriz r × Q de vectores de entrada Q
T:Matriz s × Q de vectores de clase objetivo Q
desparramar: Extensión de funciones de base radial propagadas (predeterminado = 0,1)
Si la difusión es cercana a cero, la red actúa como clasificador vecino más cercano. Cuando la escala se vuelve grande, la red diseñada considera varios vectores de diseño cercanos.
[Y,Xf,Af] = sim(net,X,Xi,Ai,T)
red: red
X: entrada a la red
Xi: condición de retardo de entrada inicial (predeterminado = 0)
Ai: condición de retardo de capa inicial (predeterminado = 0)
T: objetivo de red (predeterminado = 0)
- X = [1 2; 2 2; 1 1]';
- Tc = [1 2 3];
- figure(1)
- plot(X(1,:),X(2,:),'.','markersize',30)
- for i = 1:3, text(X(1,i)+0.1,X(2,i),sprintf('class %g',Tc(i))), end
- axis([0 3 0 3])
- title('三个二元向量及分类')
- xlabel('X(1,:)')
- ylabel('X(2,:)')
Convertir el índice de clase objetivo Tc en vector T
Utilice NEWPNN para diseñar una red neuronal probabilística
SPREAD tiene un valor de 1 porque esta es la distancia típica entre vectores de entrada.
- T = ind2vec(Tc);
- spread = 1;
- net = newpnn(X,T,spread);
- %测试网络
- %基于输入向量测试网络。通过对网络进行仿真并将其向量输出转换为索引来实现目的。
- Y = net(X);
- Yc = vec2ind(Y);
- figure(2)
- plot(X(1,:),X(2,:),'.','markersize',30)
- axis([0 3 0 3])
- for i = 1:3,text(X(1,i)+0.1,X(2,i),sprintf('class %g',Yc(i))),end
- title('测试网络')
- xlabel('X(1,:)')
- ylabel('X(2,:)')
- x = [2; 1.5];
- y = net(x);
- ac = vec2ind(y);
- hold on
- figure(3)
- plot(x(1),x(2),'.','markersize',30,'color',[1 0 0])
- text(x(1)+0.1,x(2),sprintf('class %g',ac))
- hold off
- title('新数据分类')
- xlabel('X(1,:) and x(1)')
- ylabel('X(2,:) and x(2)')
Dividido en tres categorías.
- x1 = 0:.05:3;
- x2 = x1;
- [X1,X2] = meshgrid(x1,x2);
- xx = [X1(:) X2(:)]';
- yy = net(xx);
- yy = full(yy);
- m = mesh(X1,X2,reshape(yy(1,:),length(x1),length(x2)));
- m.FaceColor = [0 0.5 1];
- m.LineStyle = 'none';
- hold on
- m = mesh(X1,X2,reshape(yy(2,:),length(x1),length(x2)));
- m.FaceColor = [0 1.0 0.5];
- m.LineStyle = 'none';
- m = mesh(X1,X2,reshape(yy(3,:),length(x1),length(x2)));
- m.FaceColor = [0.5 0 1];
- m.LineStyle = 'none';
- plot3(X(1,:),X(2,:),[1 1 1]+0.1,'.','markersize',30)
- plot3(x(1),x(2),1.1,'.','markersize',30,'color',[1 0 0])
- hold off
- view(2)
- title('三分类')
- xlabel('X(1,:) and x(1)')
- ylabel('X(2,:) and x(2)')
La red neuronal probabilística (PNN) es una red neuronal artificial que se utiliza para la clasificación de patrones. Se basa en el teorema de Bayes y el modelo de mezcla gaussiano y se puede utilizar para procesar varios tipos de datos, incluidos datos continuos y datos discretos. PNN es más flexible que las redes neuronales tradicionales cuando se trata de problemas de clasificación y tiene mayor precisión y capacidades de generalización.
El principio de funcionamiento básico de PNN es calcular la similitud entre el conjunto de datos de entrada y cada muestra en el conjunto de muestras, y clasificar los datos de entrada en función de la similitud. PNN consta de cuatro capas: capa de entrada, capa de patrón, capa de competencia y capa de salida. Los datos de entrada se pasan primero a la capa de patrón a través de la capa de entrada, luego se calcula la similitud a través de la capa de competencia y finalmente se clasifican en la capa de salida de acuerdo con la similitud.
En Matlab, puede utilizar cajas de herramientas relevantes o programarse usted mismo para implementar la clasificación PNN. Primero, debe preparar un conjunto de datos de entrenamiento y un conjunto de datos de prueba, y luego entrenar el modelo PNN a través del conjunto de datos de entrenamiento. Una vez completado el entrenamiento, el conjunto de datos de prueba se puede utilizar para evaluar el rendimiento de clasificación del PNN y hacer predicciones.
En general, PNN es un método de clasificación potente adecuado para diversos problemas de clasificación. En aplicaciones prácticas, se pueden seleccionar características y parámetros de modelo apropiados de acuerdo con problemas específicos para mejorar el rendimiento de la clasificación. Matlab proporciona una gran cantidad de herramientas y soporte funcional, lo que facilita la implementación y aplicación de PNN.
- %% 基于概率神经网络(PNN)的分类(matlab)
- %此处有三个二元输入向量 X 和它们相关联的类 Tc。
- %创建 y 概率神经网络,对这些向量正确分类。
- %重要函数:NEWPNN 和 SIM 函数
- %% 数据集及显示
- X = [1 2; 2 2; 1 1]';
- Tc = [1 2 3];
- figure(1)
- plot(X(1,:),X(2,:),'.','markersize',30)
- for i = 1:3, text(X(1,i)+0.1,X(2,i),sprintf('class %g',Tc(i))), end
- axis([0 3 0 3])
- title('三个二元向量及分类')
- xlabel('X(1,:)')
- ylabel('X(2,:)')
- %% 基于设计输入向量测试网络
- %将目标类索引 Tc 转换为向量 T
- %用 NEWPNN 设计 y 概率神经网络
- % SPREAD 值 1,因为这是输入向量之间的 y 典型距离。
- T = ind2vec(Tc);
- spread = 1;
- net = newpnn(X,T,spread);
- %测试网络
- %基于输入向量测试网络。通过对网络进行仿真并将其向量输出转换为索引来实现目的。
- Y = net(X);
- Yc = vec2ind(Y);
- figure(2)
- plot(X(1,:),X(2,:),'.','markersize',30)
- axis([0 3 0 3])
- for i = 1:3,text(X(1,i)+0.1,X(2,i),sprintf('class %g',Yc(i))),end
- title('测试网络')
- xlabel('X(1,:)')
- ylabel('X(2,:)')
- %数据测试
- x = [2; 1.5];
- y = net(x);
- ac = vec2ind(y);
- hold on
- figure(3)
- plot(x(1),x(2),'.','markersize',30,'color',[1 0 0])
- text(x(1)+0.1,x(2),sprintf('class %g',ac))
- hold off
- title('新数据分类')
- xlabel('X(1,:) and x(1)')
- ylabel('X(2,:) and x(2)')
- %% 概率神经网络将输入空间分为三个类。
- x1 = 0:.05:3;
- x2 = x1;
- [X1,X2] = meshgrid(x1,x2);
- xx = [X1(:) X2(:)]';
- yy = net(xx);
- yy = full(yy);
- m = mesh(X1,X2,reshape(yy(1,:),length(x1),length(x2)));
- m.FaceColor = [0 0.5 1];
- m.LineStyle = 'none';
- hold on
- m = mesh(X1,X2,reshape(yy(2,:),length(x1),length(x2)));
- m.FaceColor = [0 1.0 0.5];
- m.LineStyle = 'none';
- m = mesh(X1,X2,reshape(yy(3,:),length(x1),length(x2)));
- m.FaceColor = [0.5 0 1];
- m.LineStyle = 'none';
- plot3(X(1,:),X(2,:),[1 1 1]+0.1,'.','markersize',30)
- plot3(x(1),x(2),1.1,'.','markersize',30,'color',[1 0 0])
- hold off
- view(2)
- title('三分类')
- xlabel('X(1,:) and x(1)')
- ylabel('X(2,:) and x(2)')
-
-
-