r2_score 和 cross_val_score 中的scoring ='r2' 之间的差异

lio*_*063 7 scikit-learn sklearn-pandas

我试图从 cross_validation.cross_val_score 生成 R 平方值,约为 0.35,然后将模型应用到同一训练数据集中,并使用“r2_score”函数生成 R 平方值,约为 0.87。我想知道我得到了两个相差如此之大的结果。任何帮助将不胜感激。代码附在下面。

num_folds = 2
num_instances = len(X_train)
scoring ='r2'

models = []
models.append(('RF', RandomForestRegressor()))
results = []
names = []
for name, model in models:
    kfold = cross_validation.KFold(n=num_instances, n_folds=num_folds, random_state=seed)
    cv_results = cross_validation.cross_val_score(model, X_train, Y_train, cv=kfold,
    scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)

model.fit(X_train, Y_train)
train_pred=model.predict(X_train)
r2_score(Y_train, train_pred)
Run Code Online (Sandbox Code Playgroud)

小智 1

其实它们是一样的。就您而言,您已使用r2交叉验证分数。我的意思是,您将训练集分为 2 部分 ( num_folds = 2),并r2计算这两部分,然后求平均值cv_results.mean()。总而言之,您已用于r2验证分数,而用于r2_score评估模型在整个训练集上的性能。