機器學習——用實例講明如何利用SOM神經網絡進行聚類

自組織特徵映射網絡(SOM)是一種競爭性神經網絡,同時引入了自組織的特性。具體的概念不再講解,本文主要講如何利用SOM進行聚類。

實例:

本次實驗共有四類三文魚樣本,其類別依次是:未注水、注水**1、注水**2、注水**3。每一類都有15個樣本,共有60個樣本,並將所有樣本編號爲1、2、3、4、557、58、59、60,每一個樣品都已經利用高光譜掃描獲得相應圖像,如下。

                                                                     
將60個三文魚樣本利用顏色矩獲得有效的顏色特徵後,然後將得到的2個顏色特徵向量的數據歸一化, 利用MATLAB 進行自組織映射(SOM)聚類分析。(由於此實驗已經發表論文,正在審覈中,爲了避免麻煩,數據不給出)。

下面給出操作代碼:

%%  清空環境變量
clear all
clc
%% 導入數據
load attribute_corlor.mat
%% 數據歸一化
attributes = mapminmax(attributes);
%%
% 60個樣本
P_train = attributes(:,1:end);
%%  SOM神經網絡創建、訓練及仿真測試
%%
% 1. 創建網絡
net = newsom(P_train,[2 2]);
%%
% 2. 設置訓練參數
net.trainParam.epochs = 1000;
%%
% 3. 訓練網絡
net = train(net,P_train);

在進行1000次的穩定訓練後, 得到SOM神經網絡,如下圖。

將數據點和權重向量的位置可視化,如圖一所示。


 

使用SOM Input Planes圖來可視化權重,如圖二。輸入樣本的每個特徵向量都有一個權重平面。它們是將每個輸入連接到每個神經元的權重的可視化。淺色和深色顏色分別代表較大和較小的權重。如果兩個輸入的連接模式非常相似, 則可以假定輸入高度相關。在顏色矩作爲特徵訓練時,第一個特徵向量在二號神經元貢獻最大,第二個特徵向量在三號神經元貢獻最大。


當輸入空間爲高維時, 不能同時可視化所有權重。在這種情況下, 也可使用SOM Neighbor Distances來顯示,如圖三。圖三顯示了相鄰神經元之間的距離。
此圖使用以下顏色編碼:
藍色六邊形代表神經元。
紅線連接相鄰神經元。
包含紅線的區域中的顏色表示神經元之間的距離。
深的顏色代表更大的距離。
淺的顏色代表更小的距離。

二號神經元和其他三個神經元有較大的距離,結合圖二也可以得到相關結論,。


利用SOM Sample Hit圖像可以得出有多少數據點與每個神經元相關聯,如圖四。顏色矩的數據相當地均勻分佈在神經元上,證明分類效果很好。由圖四可知,利用顏色矩作爲特徵進行SOM聚類效果很好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章