当我尝试使用以下命令导出随机森林图时:
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)
而且效果很好。
最佳答案
(仅由文档提供;没有个人经验)
您正在尝试使用签名如下的函数绘制一些DecisionTree:
sklearn.tree.export_graphviz(decision_tree, ...)
但是您要经过一个由树木组成的集合的RandomForest。
那是行不通的!
更深入地讲,内部的代码是here:
check_is_fitted(decision_tree, 'tree_')
因此,这是在查询DecisionTree的属性
tree_
,该属性存在于DecisionTreeClassifier中。RandomForestClassifier不存在此属性!因此错误。
您唯一可以做的是:打印RandomForest集成中的每个DecisionTree。为此,您需要遍历
random_forest.estimators_
以获得基础决策树!