sklearn GridSearchCV avec Pipeline
je suis nouveau sklearn
's Pipeline
et GridSearchCV
caractéristiques. J'essaie de construire un pipeline qui fait D'abord RandomizedPCA sur mes données d'entraînement et ensuite s'adapte à un modèle de régression de crête. Voici mon code:
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:])
je connais la fonction RidgeCV
mais je veux essayer Pipeline et GridSearch CV.
je veux que le CV de recherche de grille signale l'erreur RMSE, mais cela ne semble pas supporté dans sklearn donc je fais avec MSE. Cependant, les scores qu'il attribue sont négatifs:
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}]
Évidemment, ce n'est pas possible pour l'erreur quadratique moyenne - ce que je fais mal?
2 réponses
ces scores sont négatifs MSE, c.-à-d. les nier et vous obtenez le MSE. La chose est que GridSearchCV
, par convention, tente toujours de maximiser son score ainsi fonctions de perte comme MSE doivent être niés.
si vous voulez obtenir RMSE comme une métrique, vous pouvez écrire votre propre callable/fonction qui prendra Y_pred et Y_org et calculer le RMSE.
ref: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.make_scorer.html