机器学习——用实例讲明如何利用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聚类效果很好。

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