Diferença entre cross_val_score e cross_val_predict

Eu quero avaliar uma construção de modelo de regressão com o scikitlearn usando validação cruzada e ficando confuso, qual das duas funçõescross_val_score ecross_val_predict Eu deveria usar. Uma opção seria:

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))

Outro, para usar as previsões cv com o padrãor2_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)))

Eu diria que ambos os métodos são válidos e dão resultados semelhantes. Mas esse é apenas o caso de pequenas dobras em k. Enquanto r ^ 2 é aproximadamente o mesmo para 10 vezes cv, fica cada vez mais baixo para valores k mais altos no caso da primeira versão usando "cross_vall_score". A segunda versão não é afetada principalmente pela alteração do número de dobras.

Esse comportamento é esperado e não tenho entendimento sobre o CV no SKLearn?

questionAnswers(2)

yourAnswerToTheQuestion