2016-10-20 2 views
5

Я хочу построить дерево решений случайного леса. Итак, я создаю следующий код:Плоские деревья для случайного леса в Python с Scikit-Learn

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

Предполагая, что ваша модель Random Forest уже установлена, первым следует сначала импортировать 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, случайный лес - это список деревьев. Вы можете получить этот список, используя атрибут 'evaluationators_'. Вы можете экспортировать, например, первое дерево, используя 'random_forest.estimators_ [0]'. –

Смежные вопросы