Pybrain中的交叉验证

2024-09-28 05:20:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找出正确的方法在pybrain中进行5倍交叉验证。我看了他们的文件,但没用。我在网上找到了以下两个版本的代码:

在一个问题here中找到了这个。在

net = pybrain.tools.shortcuts.buildNetwork(5, 8, 1)
trainer = BackpropTrainer(net, ds)
evaluation = ModuleValidator.classificationPerformance(trainer.module, ds)
validator = CrossValidator(trainer=trainer, dataset=trainer.ds, n_folds=5, valfunc=evaluation)
print(validator.validate())

Error:
evaluation = ModuleValidator.classificationPerformance(trainer.module, ds)

File ".../pybrain/tools/validation.py", line 168, in classificationPerformancedataset)

File ".../pybrain/tools/validation.py", line 204, in validate return valfunc(output, target)

File ".../pybrain/tools/validation.py", line 33, in classificationPerformance return float(n_correct) / float(len(output))

TypeError: only length-1 arrays can be converted to Python scalars

第二个是here。在

^{pr2}$

Error - trainer.train()

File ".../rprop.py", line 43, in train for seq in self.ds._provideSequences():

AttributeError: 'NoneType' object has no attribute '_provideSequences'

我去了源代码,试图跟踪错误的原因,但不知道我需要更改什么。感谢任何帮助。在

当我通过简单地将数据集分成3个部分(培训、验证和测试)运行代码时,它运行得很好。我只有在尝试实现k-fold交叉验证时才会遇到这些错误。在


Tags: 代码inpynetherelinedstools
1条回答
网友
1楼 · 发布于 2024-09-28 05:20:25

这似乎对我有用:

import numpy as np

from processdata import process_data
from pybrain.datasets import ClassificationDataSet
from pybrain.datasets import SupervisedDataSet
from pybrain.structure import FeedForwardNetwork
from pybrain.structure import LinearLayer, SigmoidLayer
from pybrain.structure import FullConnection
from pybrain.supervised.trainers import BackpropTrainer

n=FeedForwardNetwork()

#Define Layers
inLayer= LinearLayer(200)
hiddenLayer= SigmoidLayer(100)
outLayer = LinearLayer(1)

#Add layers to the neural net module
n.addInputModule(inLayer)
n.addModule(hiddenLayer)
n.addOutputModule(outLayer)

#Define Connections
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)

#add connections to the module
n.addConnection(in_to_hidden)
n.addConnection(hidden_to_out)
#make ready
n.sortModules()

#Define Trainer
trainer = BackpropTrainer( n, dataset=ds, momentum=0.1, verbose=True, weightdecay=0.005)

#perform crossvalidation
from pyBrain.tools.validation import CrossValidator
cv=CrossValidator(trainer=trainer, dataset=ds, n_folds=5) #creates a crossvalidator instance
CrossValidator.validate(cv) #calls the validate() function in CrossValidator to return results

它应该输出每个折叠的误差。在

相关问题 更多 >

    热门问题