2017-10-17 107 views
1

我使用GridSearchCV与管道管线内部方差解释如下:sklearn - 如何检索PCA组件和从传递给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) 

我现在该如何找回就像从componentsexplained_variance PCA细节grid.best_estimator_型号?

此外,我还想使用pickle将best_estimator_保存到文件中,稍后加载它。如何从此加载的估算器中检索PCA详细信息?我怀疑它会和上面一样。

+0

我没有得到你的PCA电网部分:'“reduce_dim__n_components”:范围(0.7,0.9 ,0.1)'这里的数值范围是什么? – guy

回答

2

grid.best_estimator_是访问具有最佳参数的管道。

现在使用named_steps[]attribute访问管道的内部估计器。

所以grid.best_estimator_.named_steps['reduce_dim']会给你pca的对象。现在,你可以简单地使用它来访问components_explained_variance_ attibutes此PCA对象是这样的:

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

+0

这是完美的。谢谢一堆! – shikhanshu

相关问题