ho qualche codice di lavoro che carica correttamente i dati da un file CSV in un set di dati PyBrain:PyBrain: caricamento dei dati con numpy.loadtxt?
def old_get_dataset():
reader = csv.reader(open('test.csv', 'rb'))
header = reader.next()
fields = dict(zip(header, range(len(header))))
print header
# assume last field in csv is single target variable
# and all other fields are input variables
dataset = SupervisedDataSet(len(fields) - 1, 1)
for row in reader:
#print row[:-1]
#print row[-1]
dataset.addSample(row[:-1], row[-1])
return dataset
ora sto cercando di riscrivere il codice per utilizzare la funzione di loadtxt NumPy invece. Credo che addSample possa prendere array numpy piuttosto che dover aggiungere i dati una riga alla volta.
Supponendo che la mia matrice numpy caricata sia m x n dimensionale, come passare il primo set di dati m x (n-1) come primo parametro e l'ultima colonna di dati come secondo parametro? Questo è quello che sto cercando:
def get_dataset():
array = numpy.loadtxt('test.csv', delimiter=',', skiprows=1)
# assume last field in csv is single target variable
# and all other fields are input variables
number_of_columns = array.shape[1]
dataset = SupervisedDataSet(number_of_columns - 1, 1)
#print array[0]
#print array[:,:-1]
#print array[:,-1]
dataset.addSample(array[:,:-1], array[:,-1])
return dataset
Ma sto ottenendo il seguente errore:
Traceback (most recent call last):
File "C:\test.py", line 109, in <module>
(d, n, t) = main()
File "C:\test.py", line 87, in main
ds = get_dataset()
File "C:\test.py", line 45, in get_dataset
dataset.addSample(array[:,:-1], array[:,-1])
File "C:\Python27\lib\site-packages\pybrain\datasets\supervised.py",
line 45, in addSample self.appendLinked(inp, target)
File "C:\Python27\lib\site-packages\pybrain\datasets\dataset.py",
line 215, in appendLinked self._appendUnlinked(l, args[i])
File "C:\Python27\lib\site-packages\pybrain\datasets\dataset.py",
line 197, in _appendUnlinked self.data[label][self.endmarker[label], :] = row
ValueError: output operand requires a reduction, but reduction is not enabled
Come posso risolvere questo problema?
Credo che il problema potrebbe essere correlato a addSample() in attesa di una matrice a 2 dimensioni per entrambi i parametri, ma sto passando in un 1- matrice dimensionale. Sono un po 'confuso su come rendere l'array di destinazione bidimensionale in quanto vi è solo una variabile di destinazione per ogni esempio di allenamento. – User