le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
PNN (Probabilistic Neural Network, rete neurale probabilistica) è un modello di rete neurale basato sulla teoria della probabilità, utilizzato principalmente per risolvere problemi di classificazione. Il PNN è stato proposto per la prima volta da Makovsky e Masikin nel 1993. È un algoritmo di classificazione molto efficace.
Il principio della PNN può essere brevemente riassunto nei seguenti passaggi:
La PNN ha le seguenti caratteristiche:
In generale, PNN è un algoritmo di classificazione molto efficace ed è adatto a problemi di classificazione in vari campi, come il riconoscimento delle immagini, la classificazione del testo, ecc.
Ci sono tre vettori di input binari X e le loro classi associate Tc.
Crea una rete neurale probabilistica per classificare correttamente questi vettori.
La Rete Neurale Probabilistica (PNN) è una rete a base radiale adatta a problemi di classificazione.
net = newpnn(P,T,spread)% accetta due o tre parametri e restituisce una nuova rete neurale probabilistica.
P:matrice r × Q di Q vettori di input
T:Matrice s × Q dei vettori delle classi target Q
diffusione: Estensione delle funzioni di base radiale propagate (default = 0.1)
Se la diffusione è prossima allo zero, la rete agisce come un classificatore del vicino più vicino. Quando la scala diventa ampia, la rete progettata considera diversi vettori di progettazione vicini.
[Y,Xf,Af] = sim(net,X,Xi,Ai,T)
rete: rete
X: ingresso alla rete
Xi: condizione iniziale di ritardo dell'ingresso (default = 0)
Ai: condizione di ritardo del livello iniziale (default = 0)
T: destinazione della rete (impostazione predefinita = 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,:)')
Convertire l'indice della classe di destinazione Tc nel vettore T
Utilizza NEWPNN per progettare la tua rete neurale probabilistica
SPREAD ha un valore pari a 1 perché questa è la distanza tipica tra i vettori di input.
- 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)')
Diviso in tre categorie
- 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 rete neurale probabilistica (PNN) è una rete neurale artificiale utilizzata per la classificazione dei modelli. Si basa sul teorema di Bayes e sul modello della miscela gaussiana e può essere utilizzato per elaborare vari tipi di dati, inclusi dati continui e dati discreti. La PNN è più flessibile delle reti neurali tradizionali quando si tratta di problemi di classificazione e ha una maggiore precisione e capacità di generalizzazione.
Il principio di funzionamento di base della PNN è calcolare la somiglianza tra il set di dati di input e ciascun campione nel set di campioni e classificare i dati di input in base alla somiglianza. La PNN è composta da quattro livelli: livello di input, livello di pattern, livello di competizione e livello di output. I dati di input vengono prima passati allo strato di pattern attraverso lo strato di input, quindi la somiglianza viene calcolata attraverso lo strato di competizione e infine classificata nello strato di output in base alla somiglianza.
In Matlab è possibile utilizzare toolbox pertinenti o programmarsi autonomamente per implementare la classificazione PNN. Innanzitutto, è necessario preparare un set di dati di addestramento e un set di dati di test, quindi addestrare il modello PNN tramite il set di dati di addestramento. Una volta completato l'addestramento, il set di dati del test può essere utilizzato per valutare le prestazioni di classificazione della PNN e fare previsioni.
Nel complesso, la PNN è un potente metodo di classificazione adatto a vari problemi di classificazione. Nelle applicazioni pratiche, è possibile selezionare caratteristiche e parametri del modello appropriati in base a problemi specifici per migliorare le prestazioni di classificazione. Matlab fornisce una vasta gamma di strumenti e supporto funzionale, semplificando l'implementazione e l'applicazione della 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)')
-
-
-