回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一些工作代码可以正确地将csv文件中的数据加载到PyBrain数据集中:</p>
<pre><code>def old_get_<a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a>():
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
</code></pre>
<p>现在我试图重写这段代码,以使用numpy的loadtxt函数。我相信addSample可以使用numpy数组,而不必一次添加一行数据。</p>
<p>假设我加载的numpy数组是m x n维,那么如何将第一个m x(n-1)数据集作为第一个参数传递,将最后一列数据作为第二个参数传递?这就是我想要的:</p>
<pre><code>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
</code></pre>
<p>但我得到了以下错误:</p>
<pre><code>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.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>Linked(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
</code></pre>
<p>我该怎么解决?</p>