sklearn - gridsearchcv python example
Sklearn GridSearchCV con Pipeline (2)
Soy nuevo en las sklearn
Pipeline
y GridSearchCV
. Estoy tratando de construir una tubería que primero haga RandomizedPCA en mis datos de entrenamiento y luego se ajuste a un modelo de regresión de cresta. Aquí está mi código:
pca = RandomizedPCA(1000, whiten=True)
rgn = Ridge()
pca_ridge = Pipeline([(''pca'', pca),
(''ridge'', rgn)])
parameters = {''ridge__alpha'': 10 ** np.linspace(-5, -2, 3)}
grid_search = GridSearchCV(pca_ridge, parameters, cv=2, n_jobs=1, scoring=''mean_squared_error'')
grid_search.fit(train_x, train_y[:, 1:])
Sé sobre la función RidgeCV
pero quiero probar Pipeline y GridSearch CV.
Quiero que el CV de búsqueda de cuadrícula informe un error de RMSE, pero esto no parece ser compatible con Sklearn, así que estoy haciendo lo mismo con MSE. Sin embargo, los puntajes que reporta son negativos:
In [41]: grid_search.grid_scores_
Out[41]:
[mean: -0.02665, std: 0.00007, params: {''ridge__alpha'': 1.0000000000000001e-05},
mean: -0.02658, std: 0.00009, params: {''ridge__alpha'': 0.031622776601683791},
mean: -0.02626, std: 0.00008, params: {''ridge__alpha'': 100.0}]
Obviamente, esto no es posible para el error cuadrático medio, ¿qué estoy haciendo mal aquí?
Esos puntajes son puntajes negativos de MSE, es decir, nieguenlos y obtendrá el MSE. La GridSearchCV
es que GridSearchCV
, por convención, siempre trata de maximizar su puntuación, por lo que las funciones de pérdida como MSE tienen que ser negadas.
Si desea obtener RMSE como métrica, puede escribir su propia función / callable que tomará Y_pred e Y_org y calculará el RMSE.
ref: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.make_scorer.html