簡體   English   中英

如何使用Pybrain預測新數據?

[英]How to predict on new data using 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年對新數據的影響

如果我正確理解您的問題,您想使用activate功能。 例如,如果您將以下兩行添加到上面代碼的末尾:

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

...它將打印出單行的輸出。 當然,您可能希望預測多行,因此您需要讀取第二個csv,在循環中使用activate函數等。但這應該為您提供基本的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM