【发布时间】:2015-05-13 10:07:39
【问题描述】:
我正在尝试找出在 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())
错误:
评估 = ModuleValidator.classificationPerformance(trainer.module, ds)文件“.../pybrain/tools/validation.py”,第 168 行,在分类性能数据集中)
文件“.../pybrain/tools/validation.py”,第 204 行,验证中 返回值函数(输出,目标)
文件“.../pybrain/tools/validation.py”,第 33 行,分类性能 返回浮点(n_correct)/浮点(len(输出))
TypeError: 只有长度为 1 的数组可以转换为 Python 标量
还有第二个here。
modval = ModuleValidator()
for i in range(1000):
trainer.trainEpochs(1)
trainer.trainOnDataset(dataset=trndata)
cv = CrossValidator( trainer, trndata, n_folds=5, valfunc=modval.MSE )
print "MSE %f @ %i" %( cv.validate(), i )
错误 - trainer.train()
文件“.../rprop.py”,第 43 行,在火车中 对于 self.ds._provideSequences() 中的 seq:
AttributeError: 'NoneType' 对象没有属性 '_provideSequences'
我去源代码试图追踪错误的原因,但无法弄清楚我需要更改什么。任何帮助表示赞赏。
当我通过简单地将数据集分为 3 部分(训练、验证和测试)来运行我的代码时,它运行良好。只有当我尝试实现 k 折交叉验证时,我才会遇到这些错误。
【问题讨论】:
-
你能解决这个问题吗?
-
不,我不能。我不得不放弃这种方法。
标签: python cross-validation pybrain