【发布时间】:2015-08-04 10:54:10
【问题描述】:
我正在尝试使用 pybrain 对 5 个类(从 0 到 4)中的一些输入(由 44 个变量组成,范围从 -1 到 +1)进行分类,但我认为总误差固定在 0.072 左右即使我改变网络结构或减少输入向量中的变量数量。代码是:
InputT=TrainingINDF.ix[:End,:]
InputT=InputT.as_matrix()
TargetT=TrainingOUTDF.ix[:End,:]
TargetT=TargetT.as_matrix()
ds = ClassificationDataSet(44, 1, nb_classes=5)
for i in range (len(InputT)):
ds.addSample(InputT[i,:],TargetT[i])
testdata=ClassificationDataSet(44, 1, nb_classes=5)
for i in range (len(TrainingINDF.ix[StartTS:,:])):
testdata.addSample(TrainingINDF.ix[StartTS+i,:],TrainingOUTDF.ix[StartTS+i])
testdata._convertToOneOfMany()
ds._convertToOneOfMany()
net = buildNetwork(44,15,5,hiddenclass=TanhLayer, outclass=SoftmaxLayer)
trainer = BackpropTrainer(net,dataset=ds,momentum=0.1,verbose=True, weightdecay=0.01)
trnerr,valerr = trainer.trainUntilConvergence(dataset=ds,maxEpochs=100)
ris = net.activateOnDataset(testdata)
out=ris.argmax(axis=1)
percenterrortest=percentError(out, testdata['class'] )
print 'Percent Error on Test dataset: ' , percentError(trainer.testOnClassData (dataset=testdata ), testdata['class'] )
print 'Percent Error on Train dataset: ' , percentError(trainer.testOnClassData (dataset=ds ), ds['class'] )
测试百分比误差为 61.93,训练百分比误差为 60.50。 我究竟做错了什么? 令我惊讶的是 3 个错误(百分比和总错误)总是在相同的值附近;不管我改变什么。
谢谢
【问题讨论】:
-
我查看了 'out' 内部的值,发现类 1 和 3 从来不在输出值之间。你有什么主意吗?谢谢
标签: python classification pybrain