Scikit learn r2#U得分与得分之间的差异=';r2和x27;交叉评分

Scikit learn r2#U得分与得分之间的差异=';r2和x27;交叉评分,scikit-learn,sklearn-pandas,Scikit Learn,Sklearn Pandas,我试图从cross_validation.cross_val_分数中生成R平方值,约为0.35,然后我将模型应用到同一列车数据集中,并使用“r2_分数”函数生成R平方值,约为0.87。我想知道我得到了两个如此不同的结果。任何帮助都将不胜感激。代码附在下面 num_folds = 2 num_instances = len(X_train) scoring ='r2' models = [] models.append(('RF', RandomForestRegressor())) resul

我试图从cross_validation.cross_val_分数中生成R平方值,约为0.35,然后我将模型应用到同一列车数据集中,并使用“r2_分数”函数生成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)

cross_val_score
中,返回的分数根据每个折叠的测试数据进行计算,然后取平均值。在第二部分中,您将计算训练数据上的分数,在大多数情况下,这些数据将具有更高的值(因为模型已根据该数据进行训练)。谢谢。但为什么会有这么大的差异,0.35和0.87?也许你的模型拟合过度,因此训练分数比测试分数高得多。这取决于数据