主要内容

虹膜集群

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

问题:一簇鸢尾花

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

  • 萼片长度,以厘米为单位

  • 萼片宽度,单位:厘米

  • 花瓣长度以厘米为单位

  • 花瓣宽度,单位:厘米

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

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

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

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

数据准备

通过将数据组织到输入矩阵中,为SOM设置了用于聚类问题的数据X

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

在这里加载这样的数据集。

X = iris_dataset;

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

请注意,X有150个栏目。它们代表了150组鸢尾花属性。它有四行,代表四个测量值。

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

神经网络聚类

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

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

在这个例子中,我们将尝试在8x8的六角形网格中排列64个神经元的二维层。一般来说,更多的神经元可以获得更大的细节,更多的维度可以对更复杂的特征空间的拓扑进行建模。

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

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

现在可以对网络进行优化了火车

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

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

[net,tr] = train(net,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(净)

{

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

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

Baidu
map