#add sample data set
for i in range(len(traininglist)):
    DS.addSample(traininglist[i], traininglabels[i])

X = DS['input']
Y = DS['target']
dataTrain, dataTest = DS.splitWithProportion(0.8)
xTrain, yTrain = dataTrain['input'], dataTrain['target']
xTest, yTest = dataTest['input'], dataTest['target']

#step3
# trainner use BP algorithm
verbose = True
trainer = BackpropTrainer(fnn,
                          dataTrain,
                          verbose=True,
                          learningrate=0.5,
                          lrdecay=0.5,
                          momentum=0)
trainer.trainUntilConvergence(DS, maxEpochs=10)

NetworkWriter.writeToFile(fnn, 'networkClassifier.txt')

print("#############")
out = fnn.activateOnDataset(DS)
print(out)
# u can give an input, and use activate function to see the result.
#fnn.activate(input)

# Reference: http://pybrain.org/docs/tutorial/netmodcon.html#examining-a-network; https://www.zengmingxia.com/use-pybrain-to-fit-neural-networks/