本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
SOM神经网络是一种常用的聚类方法,在matlab神经网络工具箱中可以用selforgmap实现
本文讲解matlab神经网络工具箱使用SOM神经网络的Demo和入参说明,并进行相关使用讲解
通过本文,可以了解如何使用matlab工具箱来实现一个SOM神经网络,以及使用时遇到的问题
本节介绍matlab工具箱的SOM神经网络的使用
matlab-SOM神经网络示例
matlab使用selforgmap构建一个SOM神经网络,代码示例如下:
% 本demo展示用matlab工具箱训练一个SOM神经网络(2014b版matlab实测已跑通)
% demo来自matlab2014帮助文档
x = simplecluster_dataset; % 加载matlab自带的分类数据
net = selforgmap([8 8]); % 建立一个SOM神经网络
net = train(net,x); % 训练网络
view(net) % 查看网络
y = net(x); % 用训练好的网络进行预测
classes = vec2ind(y); % 将预测结果由one-hot格式转为类别索引
从上面的例子我们可以看到,使用selforgmap函数就可以建立一个SOM神经网络,
然后用train函数对SOM进行训练,最后把要预测的样本传入训练好的net中,就可以得到预测结果
代码示例如下:
net = selforgmap([3 5]);
net = train(net,X);
y = net(X);
其中,selforgmap中的[3 5]用于指定隐节点拓扑为3*5,即15个隐节点
selforgmap的语法说明
selforgmap的使用说明如下:
1. 语法: selforgmap(dimensions,coverSteps,initNeighbor,topologyFcn,distanceFcn)
2. 描述:selforgmap创建一个SOM神经网络
3. 入参说明:
dimensions : 行向量,它定义了隐层神经元尺寸。例如[8 3]定义了2维(8*3)的隐层
coverSteps : 在该步数之后,领域距离<=1,即不再更新邻域神经元
initNeighbor :初始的邻域阈值
topologyFcn :隐层拓扑结构函数
distanceFcn :拓扑距离计算函数
默认参数为:selforgmap([8 8],100,3,'hextop',linkdist')
本节讲解使用SOM神经网络时的一些常见问题
SOM使用时的常见问题
一、如何将one-hot形式的判别结果转为类别序号
net(X)得到分类结果的是one-hot形式,即得到的结果是这种形式
为了直接得到类别的序号3,可以通过vec2ind函数将转为3,如下:
二、如何查看SOM训练好的类别中心
SOM神经网络的权重W就是各个类别中心,用net.IW{1}就可以提取出来
示例如下,就是15个聚类中心的位置
三、SOM相关的绘图函数
工具箱附带了相关的绘图函数,可以画出较好看的SOM相关图片
👉plotsomhits
👉plotsomnc
👉plotsomnd
👉plotsomplanes
👉plotsompos
👉plotsomtop
但基本都是只有数据是二维时才能使用,或者才具有意义
因此老饼不再讲解,需要了解的自行在matlab里help一下
好了,以上就是如何使用matlab工具箱实现SOM神经网络的全部内容了~
End