交叉验证-TypeError:只有长度为1的数组才能转换为Python标量
我正在尝试使用交叉验证-TypeError:只有长度为1的数组才能转换为Python标量,python,pybrain,Python,Pybrain,我正在尝试使用交叉验证程序对我的数据执行交叉验证任务。但是,它不起作用,但却给了我以下错误: Traceback (most recent call last): File "/home/sfalk/workspace/SemEval2016/java/semeval2016-python/semeval_slot1_pybrain_cv.py", line 173, in <module> evaluation = ModuleValidator.classificat
交叉验证程序
对我的数据执行交叉验证任务。但是,它不起作用,但却给了我以下错误:
Traceback (most recent call last):
File "/home/sfalk/workspace/SemEval2016/java/semeval2016-python/semeval_slot1_pybrain_cv.py", line 173, in <module>
evaluation = ModuleValidator.classificationPerformance(trainer.module, ds)
File "/usr/local/lib/python2.7/dist-packages/pybrain/tools/validation.py", line 168, in classificationPerformance
dataset)
File "/usr/local/lib/python2.7/dist-packages/pybrain/tools/validation.py", line 204, in validate
return valfunc(output, target)
File "/usr/local/lib/python2.7/dist-packages/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
有没有关于这个问题的建议?@KennyOstrom好吧,看来它是一个
np.array([])
而不是一个标量..好了。验证器是正确的,错误消息是准确的。@KennyOstrom好吧,它似乎是一个np.array([])
而不是一个标量。好了。验证程序是正确的,错误消息是准确的。
trainer = BackpropTrainer( fnn, momentum=0.1, verbose=False, weightdecay=0.0)
for j in range(len(X_train)):
x = X_train[j]
y = Y_train[j]
ds = SupervisedDataSet(len(x), len(y))
ds.addSample(x, y)
trainer.trainOnDataset(dataset=ds)
trainer = BackpropTrainer(fnn, ds)
evaluation = ModuleValidator.classificationPerformance(trainer.module, ds)
validator = CrossValidator(trainer=trainer, dataset=trainer.ds, n_folds=5, valfunc=evaluation)
print(validator.validate())