Tôi có một số mã làm việc mà tải một cách chính xác dữ liệu từ một tập tin csv thành một PyBrain Dataset:PyBrain: Đang tải dữ liệu với 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
Bây giờ tôi đang cố gắng để viết lại đoạn mã này để sử dụng chức năng loadtxt NumPy của thay thế. Tôi tin rằng addSample có thể lấy các mảng có nhiều mảng hơn là phải thêm dữ liệu vào một hàng tại một thời điểm.
Giả sử mảng đã được nạp của tôi là m x n chiều, làm cách nào để truyền dữ liệu m x (n-1) đầu tiên làm tham số đầu tiên và cột dữ liệu cuối cùng làm tham số thứ hai? Đây là những gì tôi đang cố gắng:
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
Nhưng tôi nhận được lỗi sau:
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
Làm thế nào tôi có thể sửa lỗi này?
Tôi nghĩ rằng vấn đề có thể liên quan đến addSample() mong đợi một mảng 2 chiều cho cả các thông số, tuy nhiên tôi đang đi qua trong một 1- mảng chiều. Tôi là một chút bối rối như thế nào để làm cho các mảng mục tiêu 2 chiều như chỉ có một biến mục tiêu duy nhất cho mỗi ví dụ đào tạo. – User