在训练之前,我需要对我的数据进行归一化处理。在pybrain.rl.environments.task中有一个名为normalize()的函数。但是我尝试了一下,它并没有起作用,只出现了错误。因此我不能使用这个函数来处理我的训练数据。
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import TanhLayer
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import RPropMinusTrainer
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.networks import Network
from pybrain.rl.environments.task import Task
import numpy as np
ds = SupervisedDataSet(3, 1)
ds.addSample( (76.7, 13.8, 103.0), 770)
ds.addSample( (70.9, 13.0, 92.0), 650)
ds.addSample( (65.6, 15.9, 104.3), 713)
ds.addSample( (59.3, 14.8, 88.0), 593)
ds.addSample( (50.0, 13.0, 65.2), 443)
ds.addSample( (44.9, 17.6, 79.0), 547)
ds.addSample( (44.3, 18.4, 78.6), 553)
ds.addSample( (44.4, 18.4, 81.8), 576)
#create object for training data
test = Task(ds)
#set the normalization limits from 0 to 1
test.setScaling([(0, 1)], None)
#function call(problem here, I tried a lot of options for a function call, but none worked)
test.normalize((0, 1))
net = buildNetwork(ds.indim, 3, ds.outdim, bias = True, hiddenclass=TanhLayer)
trainer = BackpropTrainer(net, dataset=ds, verbose=False, learningrate = 0.01, momentum = 0.99)
trainer.trainOnDataset(ds,100)
trainer.testOnData(verbose=False)
我不理解在规范化函数中应该传递什么以及如何传递,使它正常工作。