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.
- ¿Cómo lidiar con la imputación y la encoding en caliente en pandas?
- Fusionar el clasificador de bolsas de palabras con campos numéricos arbitrarios
- Sklearn plot confusión matriz con tags
- Cómo encontrar documentos que están en el mismo grupo con KMeans
- ValueError: las dimensiones negativas no están permitidas
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.