r2_score和得分之间的差异 ='r2' 在cross_val_score



我正在尝试从 cross_validation.cross_val_score 生成大约 0.35 的 R 平方值,然后将模型应用于同一个训练数据集并使用"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)

实际上它们是相同的。在您的情况下,您已将r2用于交叉验证分数。我的意思是,您将火车组分成两部分(num_folds = 2(,然后计算r2这两组,然后平均cv_results.mean()。总而言之,您使用r2来验证分数,而r2_score用于评估模型在整个训练集上的性能。

最新更新