from
sklearn
import
datasets
import
matplotlib.pyplot as plt
from
pybrain.datasets
import
ClassificationDataSet
from
pybrain.utilities
import
percentError
from
pybrain.tools.shortcuts
import
buildNetwork
from
pybrain.supervised.trainers
import
BackpropTrainer
from
pybrain.structure.modules
import
SoftmaxLayer
from
numpy
import
ravel
iris
=
datasets.load_iris()
X_data
=
iris.data
y_data
=
iris.target
classification_dataset
=
ClassificationDataSet(
4
,
1
, nb_classes
=
3
)
for
i
in
range
(
len
(X_data)):
classification_dataset.addSample(ravel(X_data[i]), y_data[i])
testing_data, training_data
=
classification_dataset.splitWithProportion(
0.3
)
test_data
=
ClassificationDataSet(
4
,
1
, nb_classes
=
3
)
for
n
in
range
(
0
, testing_data.getLength()):
test_data.addSample(testing_data.getSample(
n)[
0
], testing_data.getSample(n)[
1
])
train_data
=
ClassificationDataSet(
4
,
1
, nb_classes
=
3
)
for
n
in
range
(
0
, training_data.getLength()):
train_data.addSample(training_data.getSample(
n)[
0
], training_data.getSample(n)[
1
])
test_data._convertToOneOfMany()
train_data._convertToOneOfMany()
build_network
=
buildNetwork(
train_data.indim,
4
, train_data.outdim, outclass
=
SoftmaxLayer)
trainer
=
BackpropTrainer(
build_network, dataset
=
train_data, learningrate
=
0.01
, verbose
=
True
)
trainer.trainEpochs(
20
)
print
(
'Error percentage on testing data=>'
, percentError(
trainer.testOnClassData(dataset
=
test_data), test_data[
'class'
]))