2017-09-13 95 views
1

当我尝试使用以下命令导出一个随机森林图:没有安装错误Sklearn的graphviz的

tree.export_graphviz(rnd_clf, out_file = None, feature_names = X_test[::1]) 

我收到以下错误:

NotFittedError: This RandomForestClassifier instance is not fitted yet. 
Call 'fit' with appropriate arguments before using this method. 

我也不是什么明白为什么它总是告诉我这一点,即使我已经安装了随机森林分类器:

rnd_clf = RandomForestClassifier( 
      n_estimators=120, 
      criterion='gini', 
      max_features= None, 
      max_depth = 14) 

rnd_clf.fit(X_train, y_train) 

,它工作得很好。

回答

4

(只有在文档去;没有亲身经历)

您正在尝试绘制一些DecisionTree,使用其签名阅读功能:

sklearn.tree.export_graphviz(decision_tree, ...) 

,但你传递一个随机森林,这是一个树集合

这不起作用!

不断深入,国内对这个代码是here

check_is_fitted(decision_tree, 'tree_') 

因此,这是要求你DecisionTree,它的存在是有DecisionTreeClassifier的属性tree_

该属性对于RandomForestClassifier不存在!所以错误。

你可以做的唯一事情是:在你的RandomForest集合中打印每一个DecisionTree。为此,您需要遍历random_forest.estimators_以获取底层决策树!

+0

谢谢!我只是认为export_graphviz(decision_tree,...)能够显示完整的随机森林。一个快速的后续问题,在我的案例中显示超过100棵树带来了一个可视化问题。 是否可以创建一个表格,在每个树深度显示最具歧视性的特征? [链接](https://stackoverflow.com/questions/46161849/sklearn-random-forest-classifier-feature-analysis-at-each-tree-level) –

+0

这不是我的专业领域。抱歉! – sascha