2014-09-21 39 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

相关问题