2014-09-21 74 views
4

所以我對python和pybrain很新,但是我在網上找到了一個代碼並在其上運行了我自己的數據。當我看着Python Shell中我看到的是pybrain什麼是總誤差,它告訴我們什麼

Total error: 0.119794950183 
Total error: 0.120078064472 
Total error: 0.119334171755 
Total error: 0.119215954708 
Total error: 0.119876371059 
Total error: 0.119621091587 
Total error: 0.119983293587 
Total error: 0.119849213731 
Total error: 0.119638354788 
Total error: 0.119574076444 
Total error: 0.119634911454 
Total error: 0.119601510912 
Total error: 0.119665039573 
Total error: 0.11944303853 
Total error: 0.11950617361 
Total error: 0.120088611572 
Total error: 0.119774446939 
Total error: 0.120016814426 
Total error: 0.119605678505 
Total error: 0.119998864263 
Total error: 0.120071472045 
Total error: 0.11973079242 
Total error: 0.119790825048 
Total error: 0.119558913137 
Total error: 0.12024443015 
Total error: 0.119525196587 
Total error: 0.12008456943 
Total error: 0.119641361568 
Total error: 0.119745707444 
Total error: 0.120065315199 

1)什麼總誤差均值和它在幹什麼

這裏是代碼

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(2,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[:2]) 
     outdata = tuple(data[2:]) 
     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.01,momentum=0.5,verbose=True) 
t.trainOnDataset(ds,5000) 
t.testOnData(verbose=True) 
+0

那麼你的代碼在哪裏? – Kasramvd 2014-09-21 13:35:24

+0

你是否適合PyBrain的某種模型?例如,如果您擬合迴歸模型,這可能是平方誤差的總和,有時稱爲總誤差。這可能是一個錯誤術語,對於您試圖適合的任何模型類而言都是常見的。 – ely 2014-09-21 13:44:35

+0

我添加了代碼 – 2014-09-21 13:50:19

回答

3

要解答有關問題「它告訴我們什麼」:查看總的錯誤可以給你一個很好的猜測,即如果你的網絡訓練時間更長,你的網絡是否可以做得更好。如果總誤差從一次迭代到下一次迭代變化很大,那將是一個跡象表明它還沒有達到最終狀態。這可能是值得看的這個鏈接:

http://pybrain.org/docs/api/supervised/trainers.html

在那裏你會看到參考trainEpochs和trainUntilConvergence。你看到的混亂現象表明(儘管它不能證明)你的網絡已經收斂到最終狀態,並且在額外的訓練中不會有太大的提高。

總之,如果總的錯誤你的看到看起來相當穩定的時候,它停止訓練,這在你的情況下,你可能不必擔心它。只需查看測試輸出並確定您的網絡是否在爲您的目的做足夠的工作。

+0

有沒有一種方法可以將代碼轉換爲python來查找正確的百分比。例如,如果ANN說0.58預測值和實際答案爲1,則輸出可以是1或0.我希望python說ANN DID是正確的,因爲它的值大約是0.50 ...所以任何ANN在上面預測的值.50,實際是1,應該說安是正確的。反之亦然。我希望這是有道理的。 – 2014-09-21 19:37:52

+1

嗯,我想你可以在循環中使用它:「 train() 訓練一個曆元的關聯模塊。」 ...然後檢查所有案例,看看你是否完成。但是你也可以嘗試將它建模爲一個分類網絡(兩個輸出分爲兩個類,我們將其解釋爲1或0)。這裏有一個例子:http://www.pybrain.org/docs/_sources/tutorial/fnn.txt – rossdavidh 2014-09-22 14:10:57

+1

謝謝你的幫助Rossdavidh :) – 2014-09-22 16:41:02

相關問題