2014-09-27 58 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

相關問題