以前,我以为神经网络很高级,要创建一个神经网络有多么困难!实际上确实非常困难。为什么这样说呢?如果真的要自己搭建一个新的框架确实很难,但是如果仅仅使用已有的框架就会非常容易。在matlab中已经有很多封装好的指令,我们可以直接调用它,就可以一步到位的搭建一个神经网络。
神经网络作为现在程序员的科技前沿,有着巨大的潜力和应用价值,不论是图像处理、图像识别、信号处理和文字识别及情感识别等方面都能够做到。所以,学会神经网络这一个重要的工具对我们做数据分析有着很大的帮助。
今天也让我们花几分钟来学习一些简单的指令,废话不多说,让我们一起来看看这个例子。
自组织地图(SOMs)非常擅长创建分类。此外,分类还保留了哪些类最类似于其他类的拓扑信息。自组织映射可以用任何需要的细节来创建。它们特别适合于许多维度的聚类数据,以及复杂的形状和连通的特征空间。它们很适合分类识别虹膜花。
四个花的属性将作为SOM的输入,它将映射到一个二维的神经元层。
程序如下:
x = iris_dataset;%首先导入数据;
net = selforgmap([8 8]);
view(net)
selforgmap通过在层的每个维度中选择神经元的数量来创建自组织映射,以对样本进行分类。我们将尝试一个2维度层的64个神经元排列在一个8x8六边形网格中的。一般来说,更大的细节是通过更多的神经元实现的,而更多的维度允许建模更复杂的特征空间的拓扑。输入大小为0,因为网络尚未被配置来匹配我们的输入数据。
[net,tr] = train(net,x);
nntraintool
NN训练工具显示了被训练的网络和用来训练它的算法。它还在训练期间显示训练状态,停止训练的标准将以绿色突出显示。
在底部开放有用的地块上的按钮可以在训练期间和之后打开。在算法名称旁边的链接,并在这些主题上列出打开文档的按钮。
在这里,自组织映射用于计算每个训练输入的类向量。这些分类覆盖了已知花的特征空间,现在可以用来对新花进行相应的分类。网络输出将是一个64x150矩阵,每个ith列代表每一个ith输入向量的jth集群,其中一个1在jth元素中。
y = net(x);
cluster_index = vec2ind(y);
plotsomtop(net)
plotsomhits(net,x)%表示各个神经元之间的碰撞次数
该图显示了各种花的分类状况,数值较大的神经元区域显示了代表高度稠密的特征空间区域的类别。
plotsomnc(net)%表示了各个神经元之间的连接;
plotsomnd(net)
plotsomnd展示了每一个神经元的课程来自于它的邻居。明亮的连接表示输入空间的高度连通区域。虽然黑暗的连接表明了代表特征空间区域的类,但它们相距遥远,它们之间很少或没有花。
plotsomplanes(net)
plotsomplane为四个输入特性显示了一个重量平面。它们是在8x8六边形网格中连接每一个64个神经元中的每一个输入的权重的可视化。深色代表更大的重量。如果两个输入有类似的重量平面(它们的颜色梯度可能是相同的或相反的),它表明它们是高度相关的。
通过以上的学习,我们最好能够实际的练习一下加深一下自己的理解。如果有什么不明白的地方,可以留言一起讨论。
看到此处说明本文对你还是有帮助的,关于“每天学习五分钟matlab——自组织竞争神经网络案例(虹膜花)”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!