1

I'm new to the Pybrain package and I tried to classify "polished_data" which is a list of 12 objects that I need to classify to 2 different groups by 10 given parameters and one integer which is 0 or 1 which symbolize the groups a and b.

import numpy as np
from sklearn import cross_validation
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure.modules import SigmoidLayer,SoftmaxLayer
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer

polished_data = np.load('polished_data.npy') start=time() 
train_in,w_in,train_tar,w_tar=cross_validation.train_test_split(polished_data[:,:10],polished_data[:,10],test_size=0.33) 
valid_in,test_in,valid_tar,test_tar=cross_validation.train_test_split(w_in,w_tar,test_size=0.5)
ds_train=SupervisedDataSet(50,25) 
ds_train.setField('input',train_in)
ds_train.setField('target',train_tar)

When I try to run this code I get this error

IndexError                                Traceback (most recent call last)
<ipython-input-8-8e02f246d0af> in <module>()
      7 ds_train=SupervisedDataSet(50,25)
      8 ds_train.setField('input',train_in)
----> 9 ds_train.setField('target',train_tar)
     10 
     11 

C:\Program Files\Anaconda3\lib\pybrain\datasets\supervised.py in setField(self, label, arr, **kwargs)
     60             self.indim = self.getDimension('input')
     61         elif label == 'target':
---> 62             self.outdim = self.getDimension('target')
     63 
     64     def _provideSequences(self):

C:\Program Files\Anaconda3\lib\pybrain\datasets\dataset.py in getDimension(self, label)
    146         `label`."""
    147         try:
--> 148             dim = self.data[label].shape[1]
    149         except KeyError:
    150             raise KeyError('dataset field %s not found.' % label)

IndexError: tuple index out of range

What should I do

Camilo Terevinto
  • 31,141
  • 6
  • 88
  • 120
Gon Eyal
  • 11
  • 1

1 Answers1

0

I see that the question is very old but still I'll answer for the sake of future users. The error arises when you use train_tar as a vector. You should add an extra dimension, by writing, for example,

ds_train.setField('target',train_tar[:,np.newaxis])