Pybrain-如何正确使用ds_train.setField

问题描述 投票:1回答:1

我是Pybrain软件包的新手,我尝试对“polished_data”进行分类,这是一个12个对象的列表,我需要通过10个给定参数将其分类为2个不同的组,并使用一个0或1的整数来表示组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

我该怎么办

indexing range pybrain index-error
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.