Ich habe einigen Arbeitscode, der richtig Daten aus einer CSV-Datei in eine PyBrain Dataset lädt:PyBrain: Daten mit numpy.loadtxt laden?
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
Jetzt statt numpy des loadtxt Funktion verwendet Ich versuche, diesen Code zu schreiben. Ich glaube, addSample kann numpige Arrays nehmen, anstatt die Daten Zeile für Zeile hinzufügen zu müssen.
Angenommen, mein geladenes numpy Array ist m x n dimensional, wie übertrage ich den ersten m x (n-1) Datensatz als ersten Parameter und die letzte Spalte als zweiten Parameter? Das ist, was ich versuche:
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
Aber ich bin immer folgende Fehlermeldung:
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
Wie kann ich dieses Problem beheben?
ich das Problem denken tun könnte addSample bezogen werden() für beide Parameter ein 2-dimensionales Array erwartet, aber in einem 1- Ich bin vorbei dimensionales Array. Ich bin ein wenig verwirrt darüber, wie man das Zielfeld zweidimensional macht, da es nur eine einzige Zielvariable pro Trainingsbeispiel gibt. – User