2017-10-17 24 views
1

J'utilise GridSearchCV avec un pipeline comme suit:sklearn - Comment récupérer les composants PCA et la variance expliquée à l'intérieur d'un pipeline est passé à GridSearchCV

grid = GridSearchCV(
    Pipeline([ 
     ('reduce_dim', PCA()), 
     ('classify', RandomForestClassifier(n_jobs = -1)) 
     ]), 
    param_grid=[ 
     { 
      'reduce_dim__n_components': range(0.7,0.9,0.1), 
      'classify__n_estimators': range(10,50,5), 
      'classify__max_features': ['auto', 0.2], 
      'classify__min_samples_leaf': [40,50,60], 
      'classify__criterion': ['gini', 'entropy'] 
     } 
    ], 
    cv=5, scoring='f1') 

grid.fit(X,y) 

Comment puis-je récupérer maintenant les détails PCA comme components et explained_variance de la grid.best_estimator_ modèle?

En outre, je veux également enregistrer le best_estimator_ dans un fichier en utilisant pickle et le charger plus tard. Comment puis-je récupérer les détails de la PCA à partir de cet estimateur chargé? Je pense que ce sera le même que ci-dessus.

+0

Je ne comprends pas votre part de grille PCA: ' 'reduce_dim__n_components': gamme (0.7,0.9 , 0.1) 'quelles sont les valeurs de la gamme ici? – guy

Répondre

2

grid.best_estimator_ est d'accéder au pipeline avec les meilleurs paramètres.

Utilisez maintenant named_steps[]attribute pour accéder aux estimateurs internes du pipeline.

Alors grid.best_estimator_.named_steps['reduce_dim'] vous donnera l'objet pca. Maintenant, vous pouvez simplement l'utiliser pour accéder aux components_ et explained_variance_ attibutes pour cet objet pca comme ceci:

grid.best_estimator_.named_steps['reduce_dim'].components_ grid.best_estimator_.named_steps['reduce_dim'].explained_variance_

+0

C'est parfait. Merci beaucoup! – shikhanshu