?? neuralnetwork_rbf_classification.m
字號:
% RBF 神經(jīng)網(wǎng)絡(luò)用于模式分類
% 使用平臺 - Matlab6.5
% 作者:陸振波,海軍工程大學(xué)
% 歡迎同行來信交流與合作,更多文章與程序下載請?jiān)L問我的個(gè)人主頁
% 電子郵件:luzhenbo@yahoo.com.cn
% 個(gè)人主頁:http://luzhenbo.88uu.com.cn
clc
clear
close all
%---------------------------------------------------
% 產(chǎn)生訓(xùn)練樣本與測試樣本,每一列為一個(gè)樣本
P1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
T1 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];
P2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
T2 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];
%---------------------------------------------------
% 歸一化
[PN1,minp,maxp] = premnmx(P1);
PN2 = tramnmx(P2,minp,maxp);
%---------------------------------------------------
% 訓(xùn)練
switch 2
case 1
% 神經(jīng)元數(shù)是訓(xùn)練樣本個(gè)數(shù)
spread = 1; % 此值越大,覆蓋的函數(shù)值就大(默認(rèn)為1)
net = newrbe(PN1,T1,spread);
case 2
% 神經(jīng)元數(shù)逐步增加,最多就是訓(xùn)練樣本個(gè)數(shù)
goal = 1e-4; % 訓(xùn)練誤差的平方和(默認(rèn)為0)
spread = 1; % 此值越大,需要的神經(jīng)元就越少(默認(rèn)為1)
MN = size(PN1,2); % 最大神經(jīng)元數(shù)(默認(rèn)為訓(xùn)練樣本個(gè)數(shù))
DF = 1; % 顯示間隔(默認(rèn)為25)
net = newrb(PN1,T1,goal,spread,MN,DF);
case 3
spread = 1; % 此值越大,需要的神經(jīng)元就越少(默認(rèn)為1)
net = newgrnn(PN1,T1,spread);
end
%---------------------------------------------------
% 測試
Y1 = sim(net,PN1); % 訓(xùn)練樣本實(shí)際輸出
Y2 = sim(net,PN2); % 測試樣本實(shí)際輸出
Y1 = full(compet(Y1)); % 競爭輸出
Y2 = full(compet(Y2));
%---------------------------------------------------
% 結(jié)果統(tǒng)計(jì)
Result = ~sum(abs(T1-Y1)) % 正確分類顯示為1
Percent1 = sum(Result)/length(Result) % 訓(xùn)練樣本正確分類率
Result = ~sum(abs(T2-Y2)) % 正確分類顯示為1
Percent2 = sum(Result)/length(Result) % 測試樣本正確分類率
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -