您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“matlab怎么實(shí)現(xiàn)SOM神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)分類”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
自組織特征映射神經(jīng)網(wǎng)絡(luò)(SOM)根據(jù)輸入空間中輸入向量的分組進(jìn)行學(xué)習(xí)和分類。
在SOM網(wǎng)絡(luò)中,競爭層中的神經(jīng)元會(huì)嘗試識別輸入空間鄰近該神經(jīng)元的部分,也就是說,SOM神經(jīng)網(wǎng)絡(luò)既可以學(xué)習(xí)訓(xùn)練數(shù)據(jù)輸入向量的分布特征,也可以學(xué)習(xí)訓(xùn)練數(shù)據(jù)輸入向量的拓?fù)浣Y(jié)構(gòu)。與SOM拓?fù)渑判蛱卣饔嘘P(guān)的重要特點(diǎn)是每個(gè)神經(jīng)元與其近鄰神經(jīng)元也是相關(guān)聯(lián)的,在權(quán)值更新過程中,不僅獲勝神經(jīng)元的權(quán)值向量得到更新,而且其近鄰神經(jīng)元的權(quán)值向量,也按照某個(gè)“近鄰函數(shù)”進(jìn)行更新,這樣在開始時(shí)移動(dòng)量很大,權(quán)值向量大致的可按它們的最終位置來排序,最后只移動(dòng)單個(gè)權(quán)值向量(微調(diào)),這樣就形成了一種特殊的分類法,全權(quán)向量按照這樣一種方式變?yōu)橛行颍此鼈冊谀硞€(gè)“彈性”網(wǎng)格上代表著輸入向量。如果網(wǎng)格的某個(gè)位置有變化,那么這種變化將影響到次神經(jīng)元的近鄰,但是,離該神經(jīng)元越遠(yuǎn),這種影響就越小,因此在競爭層的神經(jīng)元位置演變過程中,每個(gè)區(qū)域代表一類輸入向量。
換句話說,要用若干個(gè)取值向量來表示一個(gè)數(shù)據(jù)集(輸入向量),每個(gè)權(quán)值相量表示某一類輸入向量的均值。
通過訓(xùn)練,可以建立起這樣一種布局,它使得每個(gè)權(quán)值向量都位于輸入向量聚類的中心,一旦SOM完成訓(xùn)練,就可以用于對訓(xùn)練數(shù)據(jù)或其他數(shù)據(jù)進(jìn)行聚類。
%% 清空環(huán)境變量
clc
clear
%% 錄入輸入數(shù)據(jù)
% 載入數(shù)據(jù)
load p;
%轉(zhuǎn)置后符合神經(jīng)網(wǎng)絡(luò)的輸入格式
P=P';
%% 網(wǎng)絡(luò)建立和訓(xùn)練
% 建立SOM網(wǎng)絡(luò),競爭層為6*6=36個(gè)神經(jīng)元
net=selforgmap([6 6]);
plotsom(net.layers{1}.positions)
% 5次訓(xùn)練的步數(shù)
a=[10 30 50 100 200 500 1000];
% 隨機(jī)初始化一個(gè)1*10向量。
yc=rands(7,8);
%% 進(jìn)行訓(xùn)練
% 訓(xùn)練次數(shù)為10次
net.trainparam.epochs=a(1);
% 訓(xùn)練網(wǎng)絡(luò)和查看分類
net=train(net,P);
y=sim(net,P);
yc(1,:)=vec2ind(y);
plotsom(net.IW{1,1},net.layers{1}.distances)
%% 訓(xùn)練次數(shù)為30次
net.trainparam.epochs=a(2);
% 訓(xùn)練網(wǎng)絡(luò)和查看分類
net=train(net,P);
y=sim(net,P);
yc(2,:)=vec2ind(y);
plotsom(net.IW{1,1},net.layers{1}.distances)
%% 訓(xùn)練次數(shù)為50次
net.trainparam.epochs=a(3);
% 訓(xùn)練網(wǎng)絡(luò)和查看分類
net=train(net,P);
y=sim(net,P);
yc(3,:)=vec2ind(y);
plotsom(net.IW{1,1},net.layers{1}.distances)
%% 訓(xùn)練次數(shù)為100次
net.trainparam.epochs=a(4);
% 訓(xùn)練網(wǎng)絡(luò)和查看分類
net=train(net,P);
y=sim(net,P);
yc(4,:)=vec2ind(y);
plotsom(net.IW{1,1},net.layers{1}.distances)
%% 訓(xùn)練次數(shù)為200次
net.trainparam.epochs=a(5);
% 訓(xùn)練網(wǎng)絡(luò)和查看分類
net=train(net,P);
y=sim(net,P);
yc(5,:)=vec2ind(y);
plotsom(net.IW{1,1},net.layers{1}.distances)
%% 訓(xùn)練次數(shù)為500次
net.trainparam.epochs=a(6);
% 訓(xùn)練網(wǎng)絡(luò)和查看分類
net=train(net,P);
y=sim(net,P);
yc(6,:)=vec2ind(y);
plotsom(net.IW{1,1},net.layers{1}.distances)
%% 訓(xùn)練次數(shù)為1000次
net.trainparam.epochs=a(7);
% 訓(xùn)練網(wǎng)絡(luò)和查看分類
net=train(net,P);
y=sim(net,P);
yc(7,:)=vec2ind(y);
plotsom(net.IW{1,1},net.layers{1}.distances)
yc
%% 網(wǎng)絡(luò)作分類的預(yù)測
% 測試樣本輸入
t=[0.9512 1.0000 0.9458 -0.4215 0.4218 0.9511 0.9645 0.8941]';
% sim()來做網(wǎng)絡(luò)仿真
r=sim(net,t);
% 變換函數(shù) 將單值向量轉(zhuǎn)變成下標(biāo)向量。
rr=vec2ind(r)
%% 網(wǎng)絡(luò)神經(jīng)元分布情況
% 查看網(wǎng)絡(luò)拓?fù)鋵W(xué)結(jié)構(gòu)
plotsomtop(net)
% 查看臨近神經(jīng)元直接的距離情況
plotsomnd(net)
% 查看每個(gè)神經(jīng)元的分類情況
plotsomhits(net,P)
“matlab怎么實(shí)現(xiàn)SOM神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)分類”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。