主要内容

具有自组织映射的集群数据

聚类数据是神经网络的另一个很好的应用. 这个过程涉及到按相似性对数据进行分组。例如,您可以执行以下操作:

  • 根据人们的购买方式进行市场细分

  • 将数据划分为相关子集的数据挖掘

  • 通过将相关表达模式的基因分组进行生物信息学分析

假设你想根据花瓣长度、花瓣宽度、萼片长度和萼片宽度来排列花朵类型。你有150个例子有这四种测量。

与函数拟合和模式识别一样,有两种方法可以解决这个问题:

通常,最好从应用程序开始,然后使用应用程序自动生成命令行脚本。在使用任何一种方法之前,首先通过选择数据集定义问题。每个神经网络应用程序都可以访问样本数据集,您可以使用工具箱进行实验(参见浅神经网络的样本数据集).如果您有一个想要解决的特定问题,您可以将自己的数据加载到工作区中。下一节描述数据格式。

定义一个问题

要定义一个聚类问题,将输入向量(预测器)排列成输入矩阵中的列。例如,你可能想把这个由10个二元向量组成的集合聚在一起:

预测因子= [7 0 6 2 6 5 6 1 0 1;6 2 5 0 7 5 5 1 2 2]

下一节将展示如何使用神经网络聚类应用程序。此示例使用工具箱提供的示例数据集。

使用神经网络聚类应用程序聚类数据

这个例子展示了如何训练一个浅层神经网络来使用神经网络聚类应用程序。

打开神经网络聚类应用程序使用nctool

nctool

选择数据

神经网络聚类该应用程序有示例数据,可以帮助您开始训练神经网络。

要导入示例鸢尾花群集数据,选择进口>导入鸢尾花卉数据集.如果从文件或工作区导入自己的数据,则必须指定预测器以及观察结果是行还是列。

导入数据的相关信息将显示在模型的总结.这个数据集包含150个观测数据,每一个都有四个特征。

创建网络

对于聚类问题,自组织特征映射(SOM)是最常用的网络。这个网络只有一层,神经元组织在一个网格中。自组织地图学习基于相似性对数据进行聚类。有关SOM的更多信息,请参见基于自组织映射神经网络的聚类

要创建网络,请指定映射大小,这与网格中的行数和列数相对应地图大小值为10时,这对应于10行10列的网格。神经元的总数等于网格中的点的数目,在这个例子中,地图有100个神经元。您可以看到网络架构网络窗玻璃

列车网络的

要对网络进行培训,请单击火车.在培训窗格中,您可以看到培训进度。培训将继续,直到满足其中一个停止条件。在此示例中,培训将继续,直到达到最大历元数。

分析结果

分析训练结果,生成图表。在SOM训练中,与每个神经元相关的权值向量移动成为输入向量聚类的中心。此外,在拓扑中相邻的神经元在输入空间中也应该相互靠近,因此在网络拓扑的二维中可以形象化高维输入空间。SOM的默认拓扑为六边形。

要绘制SOM样本命中,在情节部分中,点击样品打.这张图显示了拓扑图中的神经元位置,并指出了与每个神经元(集群中心)相关的观察的数量。拓扑结构是一个10乘10的网格,所以有100个神经元。与任何神经元相关的最大命中数为5。因此,在该簇中有5个输入向量。

绘制重量平面(也称为组件的飞机).在情节部分中,点击飞机重量.该图显示了每个输入特性元素的权重平面(本例中为四个)。图中显示了连接每个输入到每个神经元的权重,较深的颜色代表较大的权重。如果两个特征的连接模式非常相似,那么可以假设这两个特征是高度相关的。

如果您对网络性能不满意,可以执行以下操作之一:

  • 再次训练网络。每次训练都会有不同的网络初始权值和偏差,经过再训练可以产生改进的网络。

  • 通过增加贴图大小来增加神经元的数量。

  • 使用更大的训练数据集。

您还可以在其他测试集中评估网络性能。加载附加的测试数据以评估网络,在测试部分中,点击测试.生成图表以分析其他测试结果。

生成代码

选择生成代码>生成简单的培训脚本创建MATLAB代码以从命令行复制前面的步骤。如果您想了解如何使用工具箱的命令行功能自定义培训过程,则创建MATLAB代码会很有帮助。在使用命令行函数集群数据,您将更详细地研究生成的脚本。

出口网络

您可以将训练有素的网络导出到工作空间或Simulink®。金宝app您还可以使用MATLAB Compiler™工具和其他MATLAB代码生成工具部署网络。要导出训练有素的网络和结果,请选择出口模式>出口到工作区

使用命令行函数集群数据

学习如何使用工具箱的命令行功能的最简单方法是从应用程序生成脚本,然后修改它们以定制网络训练。作为一个示例,查看在前一节中使用神经网络聚类应用程序。

用自组织映射解决聚类问题%由神经聚类应用程序生成的脚本%已创建于2021年5月21日10:15:01%此脚本假定定义了以下变量:%输入数据。x = irisInputs;%创建自组织映射dimension1 = 10;dimension2 = 10;Net = selforgmap([量纲1量纲2]);%培训网络[net,tr]=列车(net,x);%测试网络y =净(x);%查看网络视图(净)%阴谋取消注释这些行以启用不同的图。%, plotsomtop(净)%, plotsomnc(净)%, plotsomnd(净)%, plotsomplanes(净)%, plotsomhits(净,x)%, plotsompos(净,x)

您可以保存脚本,然后从命令行运行它,以重新生成上一个培训会议的结果。您还可以编辑脚本来定制培训过程。在本例中,按照脚本中的每个步骤执行。

选择数据

该脚本假设预测器已经加载到工作区中。如果数据未加载,可以通过如下方式加载:

负载iris_dataset

该命令加载预测器鸢尾花进入工作区。

该数据集是工具箱中的一个示例数据集。有关可用数据集的信息,请参见浅神经网络的样本数据集. 通过输入命令,还可以查看所有可用数据集的列表帮助nndatasets.您可以使用自己的变量名从这些数据集中加载变量。例如,命令

x = irisInputs;
将虹膜花预测器加载到数组中x

创建网络

创建一个网络。在本例中,使用自组织映射(SOM)。该网络有一个层,神经元组织在一个网格中。有关更多信息,请参阅基于自组织映射神经网络的聚类.在创建网络时selforgmap,则指定网格中的行数和列数。

dimension1 = 10;dimension2 = 10;Net = selforgmap([量纲1量纲2]);

列车网络的

培训网络。SOM网络使用默认的批处理SOM算法进行训练。

[net,tr]=列车(net,x);

在培训期间,“培训”窗口将打开并显示培训进度。要在任何时候中断培训,请单击停止训练

测试网络

测试网络。网络经过训练后,可以使用它来计算网络输出。

y =净(x);

查看网络

查看组网图。

视图(净)

分析结果

对于SOM训练,与每个神经元相关的权重向量移动成为一组输入向量的中心。此外,拓扑中彼此相邻的神经元也应该在输入空间中彼此靠近,因此可以在ne的二维中可视化高维输入空间网络拓扑。默认的SOM拓扑为六边形;要查看它,请输入以下命令。

图中,plotsomtop(净)

在这幅图中,每个六边形代表一个神经元。网格是10乘10,所以这个网络中总共有100个神经元。每个输入向量中有四个特征,所以输入空间是四维的。权重向量(簇中心)位于这个空间内。

因为这个SOM有一个二维拓扑,所以您可以在二维中可视化四维簇中心之间的关系。SOM的一个可视化工具是重量距离矩阵(也称为酉矩阵).

单击,查看u -矩阵SOM邻居的距离在训练窗口。

在这个图中,蓝色的六边形代表神经元。红线连接邻近的神经元。包含红线的区域的颜色表示神经元之间的距离。较深的颜色代表较大的距离,较浅的颜色代表较小的距离。地图上有一条黑色的区带。SOM网络似乎将花聚集成两个不同的组。

下一个步骤

要获得更多命令行操作的经验,请尝试以下任务:

另请参阅

||||

相关话题