主要内容

虹膜集群

这个例子说明了自组织映射神经网络如何从拓扑上将鸢尾花聚类,为进一步分析花的类型提供了一个有用的工具。

问题:鸢尾花丛

在这个例子中,我们试图建立一个神经网络,将虹膜花聚类到自然类中,这样类似的类就被分组在一起。每个虹膜都有四个特征:

  • 萼片长度,单位为厘米

  • 萼片宽度,单位为厘米

  • 花瓣长度,单位为厘米

  • 花瓣宽度,单位:厘米

这是聚类问题的一个例子,我们希望根据样本之间的相似度将样本分组。我们希望创建一个神经网络,它不仅为已知的输入创建类定义,而且还允许我们对未知的输入进行相应的分类。

为什么自组织映射神经网络?

自组织地图(SOMs)非常擅长创建分类。此外,分类保留了关于哪些类与其他类最相似的拓扑信息。自组织地图可以创建任何所需的细节级别。它们特别适合聚类多个维度的数据,以及具有复杂形状和连接的特征空间的数据。它们很适合在鸢尾花丛中生长。

这四个花朵属性将作为SOM的输入,SOM将把它们映射到二维神经元层上。

数据准备

通过将数据组织成输入矩阵,为SOM建立聚类问题的数据X

输入矩阵的每第i列都有4个元素,表示对一朵花的4次测量。

这里加载这样一个数据集。

X = iris_dataset;

我们可以查看输入的大小X

请注意,X有150列。这些代表了150组虹膜花属性。它有四行,表示四个测量值。

大小(x)
ans =1×2150年4

用神经网络聚类

下一步是创建一个学习聚类的神经网络。

selforgmap通过选择层的每个维度中的神经元数量,创建自组织映射,以尽可能多的细节对样本进行分类。

在本例中,我们将尝试在一个8x8的六边形网格中排列64个神经元的二维层。一般来说,更多的神经元可以获得更多的细节,更多的维度允许建模更复杂的特征空间的拓扑结构。

输入大小为0,因为网络还没有配置为匹配我们的输入数据。当网络得到训练时,这就会发生。

Net = selforgmap([8 8]);视图(净)

现在网络已经准备好进行优化了火车

神经网络训练工具展示了被训练的网络和用来训练它的算法。它还显示了训练过程中的训练状态,停止训练的标准将以绿色突出显示。

底部的按钮打开有用的图,可以在训练期间和之后打开。算法名称和绘图按钮旁边的链接打开了这些主题的文档。

[net,tr] =火车(网,x);

{

这里使用自组织映射来计算每个训练输入的类向量。这些分类涵盖了已知花的特征空间,现在可以用来对新花进行相应的分类。网络输出将是一个64x150的矩阵,其中每第i列表示第j个元素为1的第i个输入向量的第j个簇。

这个函数vec2ind对于每个向量,返回输出为1的神经元索引。对于由64个神经元所代表的64个簇,指数将在1到64之间。

Y = net(x);Cluster_index = vec2ind(y);

plotsomtop绘制位于8x8六边形网格中的64个神经元的自组织映射拓扑。每个神经元已经学会了代表不同种类的花,相邻的神经元通常代表相似的种类。

plotsomtop(净)

{

plotsomhits计算每个花的类,并显示每个类中的花的数量。有大量命中的神经元区域表示类,代表特征空间中相似的高度密集区域。而点击次数较少的区域表示特征空间中人烟稀少的区域。

plotsomhits(净,x)

{

plotsomnc显示神经元的邻居连接。邻居通常对相似的样本进行分类。

plotsomnc(净)

{

plotsomnd表示每个神经元类与其相邻神经元的距离(以欧氏距离表示)。亮的连接表示输入空间的高度连接区域。而暗连接表示代表特征空间区域的类,它们之间相隔很远,很少或没有花。

深色连接的长边界分隔了输入空间的大片区域,表明边界两侧的类代表具有非常不同特征的花。

plotsomnd(净)

{

plotsomplanes显示四个输入特征中的每一个的权重平面。它们是将每个输入连接到8x8六边形网格中的64个神经元的权重的可视化。颜色越深代表重量越大。如果两个输入具有相似的权重平面(它们的颜色梯度可能相同或相反),则表明它们高度相关。

plotsomplanes(净)

{

这个例子说明了如何设计一个基于鸢尾花的四个特征的聚类神经网络。

探索其他示例和文档,以深入了解神经网络及其应用。