Как установить graphviz в анаконда
Шаг 50.
Введение в машинное обучение с использованием Python. . . Алгоритмы машинного обучения с учителем. Деревья решений. Анализ деревьев решений
На этом шаге мы рассмотрим различные способы визуализации деревьев .
Мы можем визуализировать дерево, используя функцию export_graphviz из модуля tree . Она записывает файл в формате .dot , который является форматом текстового файла, предназначенным для описания графиков. Мы можем задать цвет узлам, чтобы выделить класс, набравший большинство в каждом узле, и передать имена классов и признаков, чтобы дерево было правильно размечено:
[In 5]: from sklearn.tree import export_graphviz export_graphviz(tree, out_file="tree.dot", class_names=["nalignant", "benign"], feature_names=cancer.feature_names, impurity=False, filled=True)
[In 6]: import graphviz with open("tree.dot") as f: dot_graph = f.read() graphviz.Source(dot_graph)
Мы можем прочитать этот файл и визуализировать его, как показано на рисунке 1 используя модуль graphviz (или любую другую программу, которая может читать файлы с расширением .dot ).
Рис.1. Визуализация дерева решений, построенного на наборе данных Breast Cancer (изображение кликабельно)
Если вы используете Anaconda под Windows , то необходимо установить conda -пакет graphviz и pip -пакет graphviz :
conda install -c anaconda graphviz=2.38.0 pip install graphviz
Затем в переменной окружения PATH необходимо прописать полный путь к установленной папке graphviz . В Windows 7 для этого нажмите кнопку Пуск , выберите Панель управления . Дважды нажмите на Система , затем выберите Дополнительные параметры системы . Во вкладке Дополнительно нажмите на Переменные среды . Выберите Path и нажмите на Изменить . В поле Значение переменной введите путь к папке graphviz ,например:
C:\Anaconda3\Library\bin\graphviz .
Как вариант, можно построить диаграмму дерева и записать ее в файл .pdf . Дополнительно нам потребуется модуль pydotplus .
[In 7]: import numpy as np import matplotlib.pyplot as plt import pandas as pd import mglearn %matplotlib inline from sklearn.model_selection import train_test_split from sklearn.datasets import load_breast_cancer from sklearn import tree from sklearn.tree import export_graphviz cancer = load_breast_cancer() X_train, X_test, y_train, y_test = train_test_split( cancer.data, cancer.target, stratify=cancer.target, random_state=42) clf = tree.DecisionTreeClassifier(max_depth=4, random_state=0) clf = clf.fit(X_train, y_train) import pydotplus dot_data = tree.export_graphviz(clf, out_file=None) graph = pydotplus.graph_from_dot_data(dot_data) graph.write_pdf("cancer.pdf")
Созданный файл можно взять здесь.
Можно построить визуализацию дерева с помощью функции Image интерактивной оболочки IPython :
[In 8]: from IPython.display import Image dot_data = tree.export_graphviz(clf, out_file=None, feature_names=cancer.feature_names, class_names=cancer.target_names, filled=True, rounded=True, special_characters=True) graph = pydotplus.graph_from_dot_data(dot_data) Image(graph.create_png())
Рис.2. Визуализация дерева с помощью функции Image (изображение кликабельно)
Визуализация дерева дает более глубокое представление о том, как алгоритм делает прогнозы и является хорошим примером алгоритма машинного обучения, который легко объяснить неспециалистам. Однако, как показано здесь, даже при глубине 4 дерево может стать немного громоздким. Деревья с большим значением глубины (деревья глубиной 10 — не редкость) еще труднее понять. Один из полезных способов исследования дерева заключается в том, чтобы выяснить, какие узлы содержат наибольшее количество данных. Параметр samples , выводимый в каждом узле на рисунке 1, показывает общее количество примеров в узле, тогда как параметр value показывает количество примеров в каждом классе. Проследовав по правой ветви, отходящей от корневого узла, мы видим, что правилу worst radius>16.795 соответствует узел, который содержит 134 случая злокачественной опухоли и лишь 8 случаев доброкачественной опухоли. Далее дерево выполняет серию более точных разбиений оставшихся 142 случаев. Из 142 случаев, которые при первоначальном разбиении были записаны в правый узел, почти все (132) в конечном итоге попали в правый лист (для удобства выделен красной рамкой).
На следующем шаге мы рассмотрим важность признаков в деревьях .
Как установить graphviz в анаконда



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Как установить graphviz в анаконда
Open Source graph visualization software.
- License: EPL-1.0
- Home: https://www.graphviz.org/
- Development: https://gitlab.com/graphviz/graphviz/
- Documentation: https://graphviz.gitlab.io/documentation/
- 305657 total downloads
- Last upload: 9 months and 26 days ago
Installers
conda install
To install this package run one of the following:
conda install anaconda::graphviz
Description
Graphviz is an open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks.
By data scientists, for data scientists
Ошибка: «‘GraphViz\’s executables not found'»
На ноуте (MacOS) уже установлена Anaconda, я так понимаю, что проблема в том, что не установлен GraphViz . Когда набираю в терминале:
conda install -c anaconda graphviz=2.38.0
Получаю ошибку:
invalid package specification: graphviz=2.38.
Как решить эту проблему?
import numpy as np from sklearn.datasets import load_iris from sklearn import tree iris = load_iris() test_idx =[0, 50, 100] #training data train_target =np.delete(iris.target, test_idx) train_data =np.delete(iris.data, test_idx, axis=0) #testing data test_target = iris.target[test_idx] test_data = iris.data[test_idx] clf = tree.DecisionTreeClassifier() clf.fit(train_data, train_target) print test_target print clf.predict(test_data) #viz code from sklearn.externals.six import StringIO import pydot dot_data = StringIO() tree.export_graphviz(clf,out_file=dot_data,feature_names=iris.feature_names, class_names=iris.target_names,filled=True, rounded=True, impurity=False) graph =pydot.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("iris.pdf")