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