cross_val_score和cross_val_predict之间的区别
我想,以评估使用交叉验证和感到困惑,这两个功能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-predictions与标准结合使用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折小的情况。尽管10倍cv的r ^ 2大致相同,但在使用“
cross_vall_score”的第一个版本的情况下,对于较高的k值,r ^ 2越来越低。第二个版本在很大程度上不受折叠数变化的影响。
这种行为是可以预期的吗?我对SKLearn中的简历缺乏了解吗?