Python中的SOM网络(Kohonen's map)效果不佳

2024-04-26 13:29:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为我的课程编写了SOM网络,但它不起作用,我不知道为什么。我有一个节点类,它是单神经元,包含权重向量。然后,我编写了SOM类,其中包含一个节点的数组

我的任务是实现SOM,它来自以下数据:http://archive.ics.uci.edu/ml/datasets/SPECT+Heart 输入向量(0)符合哪个类别。在

代码:http://pastebin.com/GerkTf3C

培训过程:

  1. 我从一组训练数据中随机得到一个输入向量和它所适合的类别。在
  2. 我激活网络,得到一个距离数组,它告诉我特定的神经元与输入向量是如何不同的。在
  3. 我得到了winner节点的索引,它与输入向量的距离很小。在
  4. 计算当前迭代的学习率和邻域半径。在
  5. 对于每一个节点,我计算出它到赢家节点的欧几里德距离。在
  6. 如果节点在winner's neighbork中,我会计算它如何更改和更新权重向量,并将它适合的类别添加到它的簇向量中。在
  7. 当学习率超过一定限度时,我重复步骤1到6
  8. 最后,我为每个节点设置了它适合的类别。在

不幸的是,我得到的有效性从40%到80%(这很不稳定,我不知道如何消除这种随机性)在训练集上进行测试(我想我应该在训练集上有100%的有效性)

抱歉,我的英语和代码质量,但我刚刚开始学习Python。在


Tags: 数据代码网络http距离节点数组类别