主要内容

虹膜集群

这个示例演示了自组织映射神经网络如何拓扑地将鸢尾花聚类,为进一步分析提供了深入了解花的类型和有用的工具。

问题:群集鸢尾花

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

  • 萼片的长度在厘米

  • 萼片的宽度在厘米

  • 花瓣长厘米

  • 花瓣的宽度在厘米

这是一个聚类问题的示例,我们希望根据样本之间的相似性将样本分组到类中。我们想要创建一个神经网络,它不仅为已知的输入创建类定义,还将让我们相应地对未知的输入进行分类。

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

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

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

准备数据

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

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

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

x = iris_dataset;

我们可以看到输入X的大小。

注意X有150列。这些代表了150套鸢尾花的属性。它有四行,用于四种测量。

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

用神经网络聚类

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

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

在这个例子中,我们将尝试一个由64个神经元组成的8 × 8六边形网格的二维层。一般来说,更多的神经元可以获得更多的细节,更多的维度可以为更复杂的特征空间建模。

输入大小是0,因为网络还没有配置为与我们的输入数据匹配。当网络被训练时就会发生这种情况。

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

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

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

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

(净,tr) =火车(净,x);

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

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

y =净(x);cluster_index = vec2ind (y);

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

plotsomtop(净)

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

plotsomhits(净,x)

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

plotsomnc(净)

plotsomnd显示了每个神经元类与相邻神经元之间的距离(用欧几里得距离表示)。明亮的连接表示输入空间的高度连接区域。而暗连接表示特征空间中间隔较远的区域的类,它们之间很少或没有花。

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

plotsomnd(净)

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

plotsomplanes(净)

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

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