相关疑难解决方法(0)

cross_val_score和cross_val_predict之间的区别

我想计算回归模型建立与使用交叉验证和感到困惑,这两个功能scikitlearn cross_val_scorecross_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))
Run Code Online (Sandbox Code Playgroud)

另一个,使用标准的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)))
Run Code Online (Sandbox Code Playgroud)

我认为这两种方法都是有效的,并给出类似的结果.但这只是小k倍的情况.虽然r ^ 2对于10倍-cv大致相同,但是对于使用"cross_vall_score"的第一版本的情况,对于更高的k值,它变得越来越低.第二个版本大多不受折叠次数变化的影响.

这种行为是否可以预期,我是否对SKLearn中的CV缺乏了解?

python regression machine-learning scikit-learn cross-validation

13
推荐指数
3
解决办法
2万
查看次数