如何使用Pybrain预测新数据?

时间:2014-09-27 21:14:47

标签: python pybrain

我想要做的是让Pybrain预测新数据,例如 预测(0,1,0,1,1,0),它应该输出它认为的答案。

问题是,为了实现这一目标,我需要粘贴哪些代码?

其他信息:Pybrain正在学习的weather.csv文件有6个属性,答案只能是1或0.没有其他数字。

我想要做的就是在学会预测我给它的数字之后再问pyBrain。像这样的例如预测(0,1,0,1,1,0),它应该出一个答案。我是Python和Pybrain的新手。

到目前为止,这是我的代码:

from pybrain.datasets import SupervisedDataSet
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer

from pybrain.datasets            import ClassificationDataSet
from pybrain.utilities           import percentError
from pybrain.tools.shortcuts     import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.modules   import SoftmaxLayer

from pylab import ion, ioff, figure, draw, contourf, clf, show, hold, plot
from scipy import diag, arange, meshgrid, where
from numpy.random import multivariate_normal

ds = SupervisedDataSet(6,1)

tf = open('weather.csv','r')

for line in tf.readlines():
    try:
        data = [float(x) for x in line.strip().split(',') if x != '']
        indata =  tuple(data[:6])
        outdata = tuple(data[6:])
        ds.addSample(indata,outdata)
    except ValueError,e:
            print "error",e,"on line"


n = buildNetwork(ds.indim,8,8,ds.outdim,recurrent=True)
t = BackpropTrainer(n,learningrate=0.001,momentum=0.05,verbose=True)
t.trainOnDataset(ds,3000)
t.testOnData(verbose=True)

更新:

我的weather.csv文件总共只有7个观察结果(仅用于测试目的)。它看起来像是在csv文件中(数据是从1970年的一周中提取出来的):

1   0   1   1   1   1   1
0   0   0   1   1   1   0
1   0   1   1   1   1   1
0   0   0   1   1   1   0
0   0   0   1   1   1   0
0   0   0   1   1   1   0
0   0   0   1   1   1   0

最后一栏(最右边)是Pybrain需要预测的一栏。当我运行代码并告诉Pybrain在这个小数据集上训练3000次(我想要过度装备)。我得到的输出是

Total error: 0.0140074590407
Total error: 0.0139930126505
Total error: 0.0139796724323
Total error: 0.0139656881439

Testing on data:
out:     [  0.732]
correct: [  1.000]
error:  0.03581333
out:     [  0.101]
correct: [  0.000]
error:  0.00511758
out:     [  0.732]
correct: [  1.000]
error:  0.03581333
out:     [  0.101]
correct: [  0.000]
error:  0.00511758
out:     [  0.101]
correct: [  0.000]
error:  0.00511758
out:     [  0.101]
correct: [  0.000]
error:  0.00511758
out:     [  0.101]
correct: [  0.000]
error:  0.00511758

现在我只想告诉pybrain它已经训练过度拟合的模型来预测 2014 中的新数据。但我不知道怎么做。我的目标是了解过度拟合模型在 2014中对新数据的影响程度。

1 个答案:

答案 0 :(得分:5)

如果我理解你的问题,你想使用激活功能。例如,如果将这两行添加到上面代码的末尾:

data2014 = n.activate([0,1,0,1,0,1])
print 'data2014',data2014

...它将打印出单行的输出。当然,您可能希望预测多行,因此您需要读取第二个csv,在循环中使用activate函数等。但这应该为您提供基本的想法。