我试图绘制用GridSearchCV形成的决策树,但它给我一个Attribute错误。
AttributeError: 'GridSearchCV' object has no attribute 'n_features_'
但是如果我尝试绘制一棵没有GridSearchCv的普通决策树,那么它就会成功打印。
代码 [无Gridsearchcv的决策树] 。
# dtc_entropy : decison tree classifier based on entropy/information Gain
#plotting : decision tree on information/entropy based
from sklearn.tree import export_graphviz
import graphviz
feature_names = x.columns
dot_data = export_graphviz(dtc_entropy, out_file=None, filled=True, rounded=True,
feature_names=feature_names,
class_names=['0','1','2'])
graph = graphviz.Source(dot_data)
graph ### --------------> WORKS
代码[决策树与网格搜索cv]
#plotting : decision tree with GRIDSEARCHCV (dtc_gscv) on information/entropy based
from sklearn.tree import export_graphviz
import graphviz
feature_names = x.columns
dot_data = export_graphviz(dtc_gscv, out_file=None, filled=True, rounded=True,
feature_names=feature_names,
class_names=['0','1','2'])
graph = graphviz.Source(dot_data)
graph ##### ------------> ERROR
错误
---------------------------------------------------------------------------
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_'
基于GridSearchCV的决策树代码。
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)
一 解决办法 是从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'])