2014-09-27 63 views
4

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

问题是我需要粘贴哪些代码才能实现此目的。

附加信息: 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与已经训练中新数据预测过拟合模型。但我不知道如何。我的目标是看到过拟合模型如何以及是否新的数据

+0

那么,当你运行这段代码时会发生什么?它与你期望的有什么不同?最后一行是不是给你预测? – rossdavidh 2014-09-28 15:05:01

+0

请参阅更新 – 2014-09-29 00:14:37

+0

最后一行给了我一个预测(如果我把最后一列留空),但它仍然训练有关数据。这就是我想要避免的。 – 2014-09-29 00:24:14

回答

5

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

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

...它将打印出单行的输出。当然,你可能想要预测不止一行,所以你会想在第二个csv中读取,在循环中使用activate函数等。但是这应该给你基本的想法。

或者,如果我误解了你的问题,请告诉我。

+0

谢谢我认为这是它。 – 2014-10-02 02:54:12

+0

我有一个简单的问题要问。当我上传带有4000个数据点的完整weather.csv文件时。它的超级慢你会知道我怎么能加快它?现在我拥有带i7处理器的8G Ram。 – 2014-10-06 08:29:54

+0

你的意思有多慢? – rossdavidh 2014-10-06 13:11:56

相关问题