Python 如何从gridsearchcv绘制决策树?

Python 如何从gridsearchcv绘制决策树?,python,scikit-learn,decision-tree,cross-validation,Python,Scikit Learn,Decision Tree,Cross Validation,我试图绘制由GridSearchCV形成的决策树,但它给了我一个属性错误 AttributeError: 'GridSearchCV' object has no attribute 'n_features_' 但是,如果我尝试在没有GridSearchCv的情况下绘制一个普通的决策树,那么它将成功打印 代码[没有gridsearchcv的决策树] 代码[带gridsearchcv的决策树] 错误 一种解决方案是从gridsearchCV中获取最佳参数,然后用这些参数形成决策树并绘制树 但是,

我试图绘制由GridSearchCV形成的决策树,但它给了我一个属性错误

AttributeError: 'GridSearchCV' object has no attribute 'n_features_'
但是,如果我尝试在没有GridSearchCv的情况下绘制一个普通的决策树,那么它将成功打印

代码[没有gridsearchcv的决策树]

代码[带gridsearchcv的决策树]

错误

一种解决方案是从gridsearchCV中获取最佳参数,然后用这些参数形成决策树并绘制树

但是,是否有任何方法可以基于GridSearchCV打印决策树。

您可以尝试:

dot_data = export_graphviz(dtc_gscv.best_estimator_, out_file=None, 
            filled=True, rounded=True, feature_names=feature_names, class_names=['0','1','2'])
你可以尝试:

dot_data = export_graphviz(dtc_gscv.best_estimator_, out_file=None, 
            filled=True, rounded=True, feature_names=feature_names, class_names=['0','1','2'])

@麦克,应该是的。分类和回归都是最佳选择,但类名应该是可选的。我正在尝试这个。dot_data=tree.export_graphvizmodel.best_估计器fitX_train,y_train,out_file=None,filled=True,rounded=True,feature_name=X_train.columns graph=graphviz.Sourcedot_datagraph@MAC应该。分类和回归都是最佳选择,但类名应该是可选的。我正在尝试这个。dot_data=tree.export_graphvizmodel.best_estimator_.fitX_train,y_train,out_file=None,filled=True,rounded=True,feature_name=X_train.columns graph=graphviz.Sourcedot_data graph
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-201-603524707f02> in <module>()
      6 dot_data = export_graphviz(dtc_gscv, out_file=None, filled=True, rounded=True,
      7                                 feature_names=feature_names,
----> 8                                 class_names=['0','1','2'])
      9 graph = graphviz.Source(dot_data)
     10 graph

1 frames
/usr/local/lib/python3.6/dist-packages/sklearn/tree/_export.py in export(self, decision_tree)
    393         # n_features_ in the decision_tree
    394         if self.feature_names is not None:
--> 395             if len(self.feature_names) != decision_tree.n_features_:
    396                 raise ValueError("Length of feature_names, %d "
    397                                  "does not match number of features, %d"

AttributeError: 'GridSearchCV' object has no attribute 'n_features_'
dtc=DecisionTreeClassifier()

#use gridsearch to test all values for n_neighbors
dtc_gscv = gsc(dtc, parameter_grid, cv=5,scoring='accuracy',n_jobs=-1)

#fit model to data
dtc_gscv.fit(x_train,y_train)
dot_data = export_graphviz(dtc_gscv.best_estimator_, out_file=None, 
            filled=True, rounded=True, feature_names=feature_names, class_names=['0','1','2'])