PyBrain – Tipos de conjuntos de datos

Los conjuntos de datos son útiles para permitir un acceso cómodo a los datos de entrenamiento, prueba y validación. En lugar de tener que lidiar con arreglos, PyBrain le brinda una estructura de datos más sofisticada que le permite trabajar más fácilmente con sus datos.

Conjuntos de datos en PyBrain

Los conjuntos de datos más utilizados que admite Pybrain son SupervisedDataSet y ClassificationDataSet.

SupervisedDataSet: Consta de campos de entrada y destino. Es la forma más simple de un conjunto de datos y se utiliza principalmente para tareas de aprendizaje supervisado. Como su nombre lo dice, esta forma más simple de un conjunto de datos está destinada a usarse con tareas de aprendizaje supervisado. Se compone de los campos ‘entrada’ y ‘objetivo’, cuyo tamaño de patrón debe establecerse en el momento de la creación:

Python3

from pybrain.datasets import SupervisedDataSet
  
DS = SupervisedDataSet(3, 2)
DS.appendLinked([1, 2, 3], [4, 5])
len(DS)
DS['input']
array([[1.,  2.,  3.]])

Producción:

ClassificationDataSet: Se utiliza principalmente para tratar problemas de clasificación. Toma entrada, campo de destino y también un campo adicional llamado «clase», que es una copia de seguridad automática de los objetivos dados. Por ejemplo, la salida será 1 o 0, o la salida se agrupará con valores basados ​​en la entrada dada, es decir, caerá en una clase en particular.

Python3

# Importing all the necessary libraries
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
  
# Loading iris dataset from sklearn datasets
iris = datasets.load_iris()
  
# Defining feature variables and target variable
X_data = iris.data
y_data = iris.target
  
# Defining classification dataset model
classification_dataset = ClassificationDataSet(4, 1, nb_classes=3)
  
# Adding sample into classification dataset
for i in range(len(X_data)):
    classification_dataset.addSample(ravel(X_data[i]), y_data[i])
  
# Spilling data into testing and training data 
# with the ratio 7:3
testing_data, training_data = classification_dataset.splitWithProportion(0.3)
  
# Classification dataset for test data
test_data = ClassificationDataSet(4, 1, nb_classes=3)
  
# Adding sample into testing classification dataset
for n in range(0, testing_data.getLength()):
    test_data.addSample(testing_data.getSample(
        n)[0], testing_data.getSample(n)[1])
  
# Classification dataset for train data
train_data = ClassificationDataSet(4, 1, nb_classes=3)
  
# Adding sample into training classification dataset
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()
  
# Building network with outclass as SoftmaxLayer
# on training data
build_network = buildNetwork(
    train_data.indim, 4, train_data.outdim, outclass=SoftmaxLayer)
  
# Building a backproptrainer on training data
trainer = BackpropTrainer(
    build_network, dataset=train_data, learningrate=0.01, verbose=True)
  
# 20 iterations on training data
trainer.trainEpochs(20)
  
# Testing data
print('Error percentage on testing data=>', percentError(
    trainer.testOnClassData(dataset=test_data), test_data['class']))

Producción:

Total error:  0.0892390931641
Total error:  0.0821479733597
Total error:  0.0759327938967
Total error:  0.0722385583142
Total error:  0.0690818068826
Total error:  0.0667645311923
Total error:  0.0647079622731
Total error:  0.0630345245312
Total error:  0.0608030839912
Total error:  0.0595356750412
Total error:  0.0586635639408
Total error:  0.0573043661487
Total error:  0.0559188704413
Total error:  0.0548155819544
Total error:  0.0535537679931
Total error:  0.0527051106108
Total error:  0.0515783629912
Total error:  0.0501025301423
Total error:  0.0499123823243
Total error:  0.0482250742606
Error percentage on testing data=> 20.0

Publicación traducida automáticamente

Artículo escrito por ayushcoding100 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *