我在一个由3600个模式组成的庞大数据集上训练了pybrain,并尝试在另一个类似的数据集上进行测试。显示的百分比误差为0.0277,但预测输出只是一个1s的数组,与原始输出完全不同。
df = pandas.read_csv('BOM-DEL.csv').groupby('x').mean().reset_index()[:3600]
dk = pandas.read_csv('BLR-DEL.csv').groupby('x').mean().reset_index()
dx = numpy.array((dk.x-numpy.amin(dk.x))/(numpy.amax(dk.x)-numpy.amin(dk.x))
dy = numpy.array((dk.y-numpy.amin(dk.y))/(numpy.amax(dk.y)-numpy.amin(dk.y))
dx1 = numpy.array((df.x-numpy.amin(df.x))/(numpy.amax(df.x)-numpy.amin(df.x))
dy1 = numpy.array((df.y-numpy.amin(df.y))/(numpy.amax(df.y)-numpy.amin(df.y))
ds = ClassificationDataSet(1, 1 , nb_classes=3600)
dt = ClassificationDataSet(1,1, nb_classes=3600)
for k in xrange(len(dx)):
ds.addSample(dx[k],dy[k])
dt.addSample(dx1[k],dy1[k])
trndata = dt
tstdata = ds
fnn = buildNetwork( trndata.indim, 360 , trndata.outdim, outclass=SoftmaxLayer )
trainer = BackpropTrainer( fnn, dataset=trndata, momentum=0.1, learningrate=0.01 , verbose=True, weightdecay=0.01)
trainer.trainEpochs (50)
print 'Percent Error on Test dataset: ' , percentError( trainer.testOnClassData (
dataset=tstdata )
, tstdata['class'] )
numpy.array([fnn.activate(k) for k,_ in tstdata])
我得到以下结果:
>>> array([[1.0],[1.0]....[1.0])
Percentage error = 0.02
虽然我的输出应介于0.001到1之间
有人可以解释为什么会这样吗?