ランダムフォレストの決定木をプロットしたい。だから、私は次のコードを作成します:
clf = RandomForestClassifier(n_estimators=100)
import pydotplus
import six
from sklearn import tree
dotfile = six.StringIO()
i_tree = 0
for tree_in_forest in clf.estimators_:
if (i_tree <1):
tree.export_graphviz(tree_in_forest, out_file=dotfile)
pydotplus.graph_from_dot_data(dotfile.getvalue()).write_png('dtree'+ str(i_tree) +'.png')
i_tree = i_tree + 1
しかし、それは何も生成しません。
ありがとうございました、
ランダムフォレストモデルが既に適合していると仮定すると、まず最初にexport_graphviz
関数:
from sklearn.tree import export_graphviz
Forサイクルでは、以下を実行してdot
ファイルを生成できます。
export_graphviz(tree_in_forest,
feature_names=X.columns,
filled=True,
rounded=True)
次の行はpngファイルを生成します
os.system('dot -Tpng tree.dot -o tree.png')
Fast.aiライブラリを使用して単一のツリーを描画できます。
from fastai.structured import draw_tree
from sklearn.ensemble import RandomForestRegressor
m = RandomForestRegressor(n_estimators=1, max_depth=3, bootstrap=False, n_jobs=-1)
m.fit(X_train, y_train)
draw_tree(m.estimators_[0], X_train, precision=3)