2016-10-01 11 views
1

Я хотел бы экспортировать дерево решений с помощью sklearn.Sckit learn with GraphViz экспортирует пустые выходы

Сначала я обучила дерево решений классификатора:

self._selected_classifier = tree.DecisionTreeClassifier() 
self._selected_classifier.fit(train_dataframe, train_class) 

self._column_names = list(train_dataframe.columns.values) 

После этого я использовал следующий метод для того, чтобы экспортировать дерево решений:

def _create_graph_visualization(self): 
    decision_tree_classifier = self._selected_classifier 

    from sklearn.externals.six import StringIO 
    dot_data = StringIO() 
    tree.export_graphviz(decision_tree_classifier, 
         out_file=dot_data, 
         feature_names=self._column_names) 
    import pydotplus 
    graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) 
    graph.write_pdf("decision_tree_output.pdf") 

После многих ошибок в отношении отсутствующих исполняемых файлов теперь программа успешно завершена. Файл создан, но он пуст. Что я делаю неправильно?

+0

Вы можете получить helpo быстрее, если вы включили некоторые данные, так что каждый может просто запустить свой код и увидеть ошибки. – tfv

ответ

0

Вот пример с выводом, который работает для меня, используя pydotplus:

from sklearn import tree 
import pydotplus 
import StringIO 

# Define training and target set for the classifier 
train = [[1,2,3],[2,5,1],[2,1,7]] 
target = [10,20,30] 

# Initialize Classifier. Random values are initialized with always the same random seed of value 0 
# (allows reproducible results) 
dectree = tree.DecisionTreeClassifier(random_state=0) 
dectree.fit(train, target) 

# Test classifier with other, unknown feature vector 
test = [2,2,3] 
predicted = dectree.predict(test) 

dotfile = StringIO.StringIO() 
tree.export_graphviz(dectree, out_file=dotfile) 
graph=pydotplus.graph_from_dot_data(dotfile.getvalue()) 
graph.write_png("dtree.png") 
graph.write_pdf("dtree.pdf") 
+0

Если я использую ваш путь, я получаю сообщение об ошибке: graph.write_pdf ("dtree.pdf") Ожидаемый {'graph' | 'digraph'} (at char 0), (строка: 1, col: 1) AttributeError: объект «NoneType» не имеет атрибута «write_pdf» –

+0

любой идеи, как его избежать? –