2016-10-20 502 views
5

我想繪製隨機森林的決策樹。所以,我創建了下面的代碼:使用Scikit-Learn爲Python中的隨機森林繪圖樹

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 

但它不會產生任何東西.. 你有一個想法如何繪製從隨機森林決策樹?

謝謝

回答

10

假設你隨機森林模型已安裝好, 首先你應該先導入export_graphviz功能:

from sklearn.tree import export_graphviz 

在你的週期,你可以做以下的生成dot文件

export_graphviz(tree_in_forest, 
       feature_names=X.columns, 
       filled=True, 
       rounded=True) 

下一行生成一個PNG文件

os.system('dot -Tpng tree.dot -o tree.png') 
+0

我認爲在隨機森林中沒有樹的屬性,不是嗎? – LKM

+4

@LKM,隨機森林是一個樹列表。您可以使用'estimators_'屬性獲取該列表。你可以使用'random_forest.estimators_ [0]'輸出例如第一棵樹。 –