params = {'max_depth': np.arange(2,12,2),
'max_leaf_nodes': np.arange(10,30,2),
'min_samples_split': [2,3,4],
'min_samples_leaf': [1,2]}
clf = DecisionTreeClassifier(random_state=1)
gcv = GridSearchCV(estimator=clf,param_grid=params)
gcv.fit(X_train,y_train)
model = gcv.best_estimator_
model.fit(X_train,y_train)
## 可视化决策树经过剪剪枝后的树结构
dot_data = StringIO()
export_graphviz(model, out_file=dot_data,
feature_names=X_train.columns,
filled=True,
rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
Image(graph.create_png())