如何在PyBrain中加载训练数据?

8

我正在尝试使用PyBrain进行一些简单的神经网络训练。但我不知道如何从文件中加载训练数据。网站上没有任何解释。我不关心格式,因为现在我可以构建它,但我需要将其保存到文件中,而不是手动逐行添加,因为我会有数百行。


1
几百行意味着你有一个非常小的数据集,不必担心性能问题。但是PyBrain难道不只接受NumPy数组吗? - Fred Foo
我不知道,我刚开始使用它,但是他们没有说明如何在神经网络中使用NumPy数组:/ - Dr Sokoban
2个回答

21
这里是我的做法:
ds = SupervisedDataSet(6,3)
tf = open('mycsvfile.csv','r')
for line in tf.readlines(): data = [float(x) for x in line.strip().split(',') if x != ''] indata = tuple(data[:6]) outdata = tuple(data[6:]) ds.addSample(indata,outdata)
n = buildNetwork(ds.indim,8,8,ds.outdim,recurrent=True) t = BackpropTrainer(n,learningrate=0.01,momentum=0.5,verbose=True) t.trainOnDataset(ds,1000) t.testOnData(verbose=True)
在这种情况下,神经网络有6个输入和3个输出。CSV文件中每行有9个值,由逗号分隔。前6个值是输入值,最后3个是输出值。

太好了,非常感谢。您知道如何访问每个神经元的权重值吗? - Dr Sokoban
1
您可以像这样访问各个层:n['in']表示输入层,n['out']表示输出层,n['hidden0']表示第一个隐藏层。我不确定,但我猜您可以以某种方式访问层的节点。dir(n['in'])应该能给您一些提示,告诉您可以做什么。 - c0m4
我找不到如何做。我会发一个新的问题。谢谢你的帮助。 - Dr Sokoban
@DrSokoban,请检查我的答案。没有比这更简单的了。 - user3103059

2
您只需按照以下方式使用pandas DataFrame
import pandas as pd

dataset = SupervisedDataSet(6,3)

df = pd.read_csv('mycsvfile.csv')

dataset.setField('input', df.values[:,:6]) # this sets the features

y=[[x] for x in df.values[:,:6])] # Do this to avoid IndexError: tuple index out of range
                                  # as the target field should be a list of lists, 
                                  # even if its shape is 1

dataset.setField('target', y)     # this set the target[s] field[s]
del df,y

并且你已经准备就绪。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接