Python中的SOM网络(Kohonen的地图) - 效果不佳

时间:2014-06-17 18:28:34

标签: python machine-learning neural-network self-organizing-maps

我为我的课程编写了SOM网络,但它不起作用,我无法弄清楚原因。我有一个Node类,它是单神经元并包含权重向量。然后,我写了一个SOM类,其中包含一个Node的数组。

我的任务是实现SOM,来自这些数据:http://archive.ics.uci.edu/ml/datasets/SPECT+Heart 告诉我哪个输入向量(它是一个二进制向量)适合哪个类别(0或1)。

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

培训过程:

  1. 我随机得到一组训练数据的输入向量和它适合的类别。
  2. 我使用网络并获得一系列距离,告诉我特定神经元与输入向量的不同之处。
  3. 我获得了胜利者节点的索引,它与输入向量的距离较小。
  4. 我计算当前迭代的学习率和邻域半径。
  5. 对于每个节点,我计算它与赢家节点的欧氏距离。
  6. 如果节点位于胜者的邻居中,我会计算它必须如何更改和更新他的权重向量,并添加它的群集矢量它所适合的类别。
  7. 我重复步骤1到6,同时学习率大于某个限制
  8. 最后,我为每个节点设置了适合的类别。
  9. 不幸的是,我获得了40%到80%的效率(它非常不稳定,我不知道如何消除这种随机性)在训练集上进行测试(我认为我应该有效率100)训练集%)

    P.S。对不起我的英语和代码质量,但我刚开始学习Python。

0 个答案:

没有答案