1

我是 Pybrain 包的新手,我尝试对“poliished_data”进行分类,这是一个包含 12 个对象的列表,我需要通过 10 个给定参数和一个 0 或 1 的整数将它们分类为 2 个不同的组,该整数表示组 a 和湾。

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)

当我尝试运行此代码时,出现此错误

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

我应该怎么办

4

1 回答 1

0

我看到这个问题已经很老了,但为了未来的用户,我仍然会回答。当您使用 train_tar 作为向量时会出现错误。您应该添加一个额外的维度,例如,通过编写,

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

于 2019-03-27T09:33:55.767 回答