Я хочу оценить построение регрессионной модели с помощью scikitlearn с использованием перекрестной проверки и путаницы, какую из двух функций cross_val_score
и cross_val_predict
я должен использовать.
Один из вариантов:
cvs = DecisionTreeRegressor(max_depth = depth)
scores = cross_val_score(cvs, predictors, target, cv=cvfolds, scoring='r2')
print("R2-Score: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
Другой, чтобы использовать cv-предсказания со стандартным r2_score
:
cvp = DecisionTreeRegressor(max_depth = depth)
predictions = cross_val_predict(cvp, predictors, target, cv=cvfolds)
print ("CV R^2-Score: {}".format(r2_score(df[target], predictions_cv)))
Я бы предположил, что оба метода действительны и дают аналогичные результаты. Но это имеет место только при малых k-краях. В то время как r ^ 2 примерно одинаково для 10-кратного-cv, он становится все ниже для более высоких k-значений в случае первой версии с использованием "cross_vall_score". Вторая версия в основном не подвержена влиянию изменения количества складок.
Ожидается ли такое поведение, и мне не хватает понимания CV в SKLearn?