Я пытаюсь использовать кросс-валидатор для своих данных, но получаю 0,0 успеха, что не имеет смысла.
Мои данные состоят из образцов с 5 непрерывными атрибутами и двумя возможными классами: «y» и «n».
Мой код:
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())
Когда я регулярно тренируюсь вот так
print(trainer.train())
Я получаю разумную частоту ошибок, поэтому я предполагаю, что это означает, что набор данных и сеть в порядке, и проблема в перекрестном валидаторе.
Любые идеи?
Обновлять:
Я посмотрел код перекрестной проверки и заметил, что моя сеть выводит непрерывные значения, а не 0/1, как требуется. Я предполагаю, что это вероятности для каждого класса. Когда модель используется внутри методов перекрестной проверки, она не учитывает это, и это означает, что все ответы считаются ошибочными, т.е. я получаю 0 правильных ответов. Как я могу добавить слой, который просматривает непрерывные значения и возвращает 0 или 1 в зависимости от того, что больше? Документация непонятна.