質問

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)

Hi everyone, first time i post here, but thanks for the work.

Ok, i´m working with neural networks (multi-layer preceptron) and i´m testing with UCI ML repository, i have to make a graphical display of the error versus the number of epochs, but i have no idea what i´m doing wrong, this is the error i got:

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

I´ve tryed with int and float at the y1.append() but i got same errors. This is all i get on console:

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'

Thanks.

役に立ちましたか?

解決

The append() function on a list does not return a value. Therefore y1 is replaced by None. You should do y1.append() and y2.append() without assigning back to y1 and y2.

More specifically

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

If you want, you can use the + operator on lists (note the [] around 3):

>>> a = a + [3]
>>> a
[1, 2, 3]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top