在pycharm 2018中,运行自增长地图的github实现失败

时间:2018-07-13 15:17:09

标签: python numpy pycharm som

我从GitHub得到了一些自组织地图(GSOM)的代码 (在实施文档中介绍了用于理解GSOM机制的所有必需信息。)

我试图在PyCharm版本2018.1.4中使用python 3.6作为Project Interpreter运行它,但是遇到了此错误:

  

ValueError:太多值无法解包(预期2)

上面的错误与GSOM类的构造函数有关,尤其是在以下循环中:

        for fn,t in dataset:
            arr = scipy.array(t)
            self.data.append([fn,arr])

我知道此错误是循环中的常见错误,我不得不说我尝试了有关此错误的所有堆栈溢出解决方案,例如,我使用了 iteritems()之类的函数,但之后我遇到以下错误:

  

AttributeError:“ numpy.ndarray”对象没有属性“ iteritems”

我为使用此实现编写的代码如下:

from gsom import GSOM
import numpy as np
dataset = np.array([
          [1., 0., 0.],
          [1., 0., 1.],
          [0., 0., 0.5],
          [0.125, 0.529, 1.0],
          [0.33, 0.4, 0.67],
          [0.6, 0.5, 1.0],
          [0., 1., 0.],
          [1., 0., 0.],
          [0., 1., 1.],
          [1., 0., 1.],
          [1., 1., 0.],
          [1., 1., 1.],
          [.33, .33, .33],
          [.5, .5, .5],
          [.66, .66, .66]])
SF = 0.5
Test = GSOM(dataset, SF)

顺便说一下,我是一名普通的python程序员,我将使用此实现作为硕士论文的主要部分,以使用二维网格可视化高维数据。

我上面使用的数据集是3维的(具有三个属性),并且是理解GSOM实现性能的简单示例。

我不得不提到,我将在论文中使用的原始数据集具有20多个属性。

1 个答案:

答案 0 :(得分:0)

为在经过4个小时的完整搜索后解决此错误!我发现我必须使用以下代码:

for fn, t in np.ndenumerate(dataset):
    arr = scipy.array(t)
    self.data.append([fn, arr])

ndenumerate()是从numpy到正确地在numpy ndarray中循环的关键功能。

谢谢我!  :)