τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Το PNN (Πιθανοτικό Νευρωνικό Δίκτυο, πιθανοτικό νευρωνικό δίκτυο) είναι ένα μοντέλο νευρωνικών δικτύων που βασίζεται στη θεωρία πιθανοτήτων, που χρησιμοποιείται κυρίως για την επίλυση προβλημάτων ταξινόμησης. Το PNN προτάθηκε για πρώτη φορά από τους Makovsky και Masikin το 1993. Είναι ένας πολύ αποτελεσματικός αλγόριθμος ταξινόμησης.
Η αρχή του PNN μπορεί να συνοψιστεί συνοπτικά στα ακόλουθα βήματα:
Το PNN έχει τα ακόλουθα χαρακτηριστικά:
Γενικά, ο PNN είναι ένας πολύ αποτελεσματικός αλγόριθμος ταξινόμησης και είναι κατάλληλος για προβλήματα ταξινόμησης σε διάφορους τομείς, όπως η αναγνώριση εικόνων, η ταξινόμηση κειμένου κ.λπ.
Υπάρχουν τρία δυαδικά διανύσματα εισόδου X και οι σχετικές κλάσεις Tc.
Δημιουργήστε ένα πιθανολογικό νευρωνικό δίκτυο για να ταξινομήσετε σωστά αυτά τα διανύσματα.
Το Πιθανολογικό Νευρωνικό Δίκτυο (PNN) είναι ένα δίκτυο ακτινικής βάσης κατάλληλο για προβλήματα ταξινόμησης.
net = newpnn(P,T,spread)% δέχεται δύο ή τρεις παραμέτρους και επιστρέφει ένα νέο πιθανοτικό νευρωνικό δίκτυο.
Π:r × Q πίνακας διανυσμάτων εισόδου Q
Τ:s × Q πίνακας διανυσμάτων κλάσης στόχου Q
εξάπλωση: Επέκταση των διαδιδόμενων συναρτήσεων ακτινικής βάσης (προεπιλογή = 0,1)
Εάν η διάχυση είναι κοντά στο μηδέν, το δίκτυο λειτουργεί ως ταξινομητής πλησιέστερου γείτονα. Όταν η κλίμακα γίνεται μεγάλη, το σχεδιασμένο δίκτυο λαμβάνει υπόψη πολλά κοντινά διανύσματα σχεδίασης.
[Y,Xf,Af] = sim(net,X,Xi,Ai,T)
net: δίκτυο
X: είσοδος στο δίκτυο
Xi: αρχική συνθήκη καθυστέρησης εισόδου (προεπιλογή = 0)
Ai: συνθήκη καθυστέρησης αρχικής στρώσης (προεπιλογή = 0)
T: στόχος δικτύου (προεπιλογή = 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,:)')
Μετατρέψτε τον δείκτη κλάσης στόχου Tc σε διάνυσμα T
Χρησιμοποιήστε το NEWPNN για να σχεδιάσετε πιθανοτικό νευρωνικό δίκτυο
Το SPREAD έχει τιμή 1 επειδή αυτή είναι η τυπική απόσταση μεταξύ των διανυσμάτων εισόδου.
- 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)')
Το πιθανοτικό νευρωνικό δίκτυο (PNN) είναι ένα τεχνητό νευρωνικό δίκτυο που χρησιμοποιείται για την ταξινόμηση προτύπων. Βασίζεται στο θεώρημα του Bayes και στο μοντέλο μείγματος Gauss και μπορεί να χρησιμοποιηθεί για την επεξεργασία διαφόρων τύπων δεδομένων, συμπεριλαμβανομένων συνεχών δεδομένων και διακριτών δεδομένων. Το PNN είναι πιο ευέλικτο από τα παραδοσιακά νευρωνικά δίκτυα όταν ασχολείται με προβλήματα ταξινόμησης και έχει υψηλότερη ακρίβεια και δυνατότητες γενίκευσης.
Η βασική αρχή λειτουργίας του PNN είναι ο υπολογισμός της ομοιότητας μεταξύ του συνόλου δεδομένων εισόδου και κάθε δείγματος στο σύνολο δειγμάτων και η ταξινόμηση των δεδομένων εισόδου με βάση την ομοιότητα. Το PNN αποτελείται από τέσσερα επίπεδα: στρώμα εισόδου, στρώμα προτύπων, στρώμα ανταγωνισμού και στρώμα εξόδου. Τα δεδομένα εισόδου διαβιβάζονται πρώτα στο επίπεδο προτύπων μέσω του επιπέδου εισόδου, στη συνέχεια υπολογίζεται η ομοιότητα μέσω του επιπέδου ανταγωνισμού και τελικά ταξινομούνται στο επίπεδο εξόδου ανάλογα με την ομοιότητα.
Στο Matlab, μπορείτε να χρησιμοποιήσετε σχετικές εργαλειοθήκες ή να προγραμματίσετε μόνοι σας την εφαρμογή της ταξινόμησης PNN. Πρώτα, πρέπει να προετοιμάσετε ένα σύνολο δεδομένων εκπαίδευσης και ένα σύνολο δεδομένων δοκιμής και, στη συνέχεια, να εκπαιδεύσετε το μοντέλο PNN μέσω του συνόλου δεδομένων εκπαίδευσης. Μετά την ολοκλήρωση της εκπαίδευσης, το σύνολο δεδομένων δοκιμής μπορεί να χρησιμοποιηθεί για να αξιολογήσει την απόδοση ταξινόμησης του PNN και να κάνει προβλέψεις.
Συνολικά, το PNN είναι μια ισχυρή μέθοδος ταξινόμησης κατάλληλη για διάφορα προβλήματα ταξινόμησης. Σε πρακτικές εφαρμογές, τα κατάλληλα χαρακτηριστικά και οι παράμετροι του μοντέλου μπορούν να επιλεγούν σύμφωνα με συγκεκριμένα προβλήματα για τη βελτίωση της απόδοσης ταξινόμησης. Το Matlab παρέχει πληθώρα εργαλείων και υποστήριξης λειτουργιών, καθιστώντας ευκολότερη την υλοποίηση και εφαρμογή του 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)')
-
-
-