2
y1 = []
y2 = []
x = []
for i in range(40):
    #fer dos llistes (error y epoch) y despres fer un plot
    trainer.trainEpochs( 1 )
    trnresult = percentError( trainer.testOnClassData(),trndata['class'] )
    tstresult = percentError( trainer.testOnClassData(dataset=tstdata ),tstdata['class'] )

    print "epoch: %4d" % trainer.totalepochs, \
          "  train error: %5.2f%%" % trnresult, \
          "  test error: %5.2f%%" % tstresult

    if i==1:
        g=Gnuplot.Gnuplot()
    else:
        y1 = y1.append(float(trnresult))
        y2 = y2.append(float(tstresult))
        x = x.append(i)
d1=Gnuplot.Data(x,y1,with_="line")
d2=Gnuplot.Data(x,y2,with_="line")
g.plot(d1,d2)

大家好,我第一次在这里发帖,但感谢您的工作。

好的,我正在使用神经网络(多层感知器)并且我正在使用 UCI ML 存储库进行测试,我必须以图形方式显示错误与 epoch 的数量,但我不知道我是什么做错了,这是我得到的错误:

y1 = y1.append(float(trnresult))
AttributeError: 'NoneType' object has no attribute 'append'

我已经尝试在 y1.append() 使用 int 和 float,但我遇到了同样的错误。这就是我在控制台上得到的全部内容:

Number of training patterns:  233

Input and output dimensions:  6 2

First sample (input, target, class):

[ 63.03  22.55  39.61  40.48  98.67  -0.25] [1 0] [ 0.]

Total error: 0.110573541007

epoch:    1   train error: 33.05%   test error: 29.87%

Total error: 0.0953749484982

epoch:    2   train error: 32.19%   test error: 35.06%

Total error: 0.0977600868845

epoch:    3   train error: 27.90%   test error: 29.87%

Traceback (most recent call last):
  File "C:\Python\Practice\dataset.py", line 79, in <module>
    y1 = y1.append(float(trnresult))
AttributeError: 'NoneType' object has no attribute 'append'

谢谢。

4

1 回答 1

1

列表上的append()函数不返回值。因此y1替换为None。你应该做y1.append()andy2.append()而不分配回y1and y2

进一步来说

>>> a = []
>>> b = a.append(1)
>>> b is None
True
>>> a
[1]
>>> a.append(2)
>>> a
[1, 2]

如果需要,可以+在列表上使用运算符(注意[]around 3):

>>> a = a + [3]
>>> a
[1, 2, 3]
于 2013-04-05T16:08:26.703 回答