2015-05-19 2 views
1

Scikit overfitting, когда я использую его для машинного обучения. Например, для регрессии я использую decisiontree.scikit overfitting все время

Учебный комплект дал мне 0,9998 для r_value; испытательный комплект дал мне 0,3134 для r_value; после перекрестной проверки тестовый комплект дал мне 0,1695 для r_value.

И если я использую функцию cross_val_predict, должен ли я добавить целевое значение тестового набора? Или это даст мне ошибку? Мне интересно, как избежать ввода целевого значения тестового набора?

+0

Что странно? Все, что вы делаете, это вызов функции библиотеки и печать ответа. Почему вы думаете, что у вас есть проблема? –

+0

Потому что набор тренировок дал мне высокий r_value, и тестовый набор дал мне низкое значение r_value. Как я могу получить аналогичные значения r_values ​​для набора тренировок и набора тестов? – Arthur

ответ

0

По умолчанию DecisionTrees создаются до тех пор, пока все листья не станут чистыми, так что это вполне ожидаемо. Вы должны попытаться установить max_depth или другой параметр регуляризации и установить его с помощью GridSearchCV. Кроме того, вы можете использовать RandomForestRegressor или ExtraTreeRegressor вместо одного дерева, что даст вам лучшую производительность в принципе каждый раз. Посмотрите на user guide,, в частности советы по практическому использованию.

+0

Спасибо! Я попробую задать параметры сетки. Кроме того, мне любопытно, почему мой результат ухудшился на тестовом наборе, если я использовал метод cross_val_predict? Он пробовал 10 раз. – Arthur

+0

Что вы пытаетесь сделать? Пожалуйста, ознакомьтесь с документацией по перекрестной проверке. http://scikit-learn.org/dev/modules/cross_validation.html То, что вы делаете прямо сейчас, не имеет большого смысла. –

Смежные вопросы