¿Cómo se calcula scikit-learn GridSearchCV best_score_?

He estado tratando de averiguar cómo se está calculando el parámetro best_score_ de GridSearchCV (o, en otras palabras, qué significa). La documentación dice:

Puntuación de best_estimator en los datos dejados fuera.

Entonces, traté de traducirlo en algo que entendí y calculé el r2_score de las “y” reales y las ys predichas de cada kfold, y obtuve diferentes resultados (usé este código):

test_pred = np.zeros(y.shape) * np.nan for train_ind, test_ind in kfold: clf.best_estimator_.fit(X[train_ind, :], y[train_ind]) test_pred[test_ind] = clf.best_estimator_.predict(X[test_ind]) r2_test = r2_score(y, test_pred) 

He buscado en todas partes una explicación más significativa de la mejor puntuación y no he podido encontrar nada. ¿A alguien le importaría explicarlo?

Gracias

Es la puntuación media de validación cruzada del mejor estimador. Hagamos algunos datos y corrijamos la división de datos de validación cruzada.

 >>> y = linspace(-5, 5, 200) >>> X = (y + np.random.randn(200)).reshape(-1, 1) >>> threefold = list(KFold(len(y))) 

Ahora ejecute cross_val_score y GridSearchCV , ambos con estos pliegues fijos.

 >>> cross_val_score(LinearRegression(), X, y, cv=threefold) array([-0.86060164, 0.2035956 , -0.81309259]) >>> gs = GridSearchCV(LinearRegression(), {}, cv=threefold, verbose=3).fit(X, y) Fitting 3 folds for each of 1 candidates, totalling 3 fits [CV] ................................................................ [CV] ...................................... , score=-0.860602 - 0.0s [Parallel(n_jobs=1)]: Done 1 jobs | elapsed: 0.0s [CV] ................................................................ [CV] ....................................... , score=0.203596 - 0.0s [CV] ................................................................ [CV] ...................................... , score=-0.813093 - 0.0s [Parallel(n_jobs=1)]: Done 3 out of 3 | elapsed: 0.0s finished 

Tenga en cuenta la score=-0.860602 , score=0.203596 y score=-0.813093 en la salida de GridSearchCV ; exactamente los valores devueltos por cross_val_score .

Tenga en cuenta que la “media” es realmente un promedio macro en los pliegues. El parámetro iid para GridSearchCV se puede usar para obtener un micro-promedio sobre las muestras en su lugar.