NameError: имя 'image_path' не определено

Я читал вопросы о stackoverflow, и решение, похоже, вставляло полный путь, однако после этого у меня появляется ошибка имени. Я использую Windows 10 Python 3.7.1.

это мой код:

from sklearn.tree import export_graphviz


export_graphviz(
        tree_clf,
        out_file = image_path("C:/Users/my_name/Desktop/iris_tree.dot"),# path where you want it to output
        feature_names=iris.feature_names[2:],
        class_names = iris.target_names,
        rounded=True,
        filled=True
)

Куда вы импортируете image_path?

Peter Featherstone 20.05.2019 22:00

он не импортируется, когда я импортирую export_graphviz?

haneulkim 20.05.2019 22:01

Не похоже на это из вашего оператора импорта, или вы не используете пространство имен. Что заставляет вас думать, что это будет волшебным образом импортировано?

Peter Featherstone 21.05.2019 02:03
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
5 249
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Что такое image_path? export_graphviz принимает параметр с именем out_file, который может быть строкой или файловым объектом:

file object or string, optional (default=None)

Поэтому я бы написал:

from sklearn.tree import export_graphviz

f = open("C:/Users/my_name/Desktop/iris_tree.dot", 'w')
export_graphviz(
        tree_clf,
        out_file=f,  # path where you want it to output
        feature_names=iris.feature_names[2:],
        class_names = iris.target_names,
        rounded=True,
        filled=True
)

Если вы следуете книге Aurelien Geron «Hands on Machine Learning with Scikit-Learn and TensorFlow», вот определение image_path из его Гитхаб (все еще не делая то, что вы хотели, я бы просто использовал свое первое решение):

import os

# Where to save the figures
PROJECT_ROOT_DIR = "."
CHAPTER_ID = "decision_trees"

def image_path(fig_id):
    return os.path.join(PROJECT_ROOT_DIR, "images", CHAPTER_ID, fig_id)

насколько я понимаю, image_path создает график, используя строковые значения. Если вы выведете его без image_path, он выведет файл MS Word, где вам придется вручную преобразовать его, посетив webgraphviz в браузере и скопировав, вставив для создания графика.

haneulkim 20.05.2019 21:51
image_path не существует. Не в вашем модуле и не в sklearn. И вы не можете изменить способ вывода export_graphviz в файл.
AdamGold 20.05.2019 22:06

У меня была такая же проблема раньше. Основываясь на АдамГолд и Джек Стивенс, это то, что я сделал, и я преобразовал точечный файл в png (вы также можете преобразовать его в pdf).

from sklearn.tree import export_graphviz

with open("/Users/Desktop/tree.dot", 'w') as f:
export_graphviz(tree_clf, 
                out_file = f,
                feature_names = iris.feature_names[2:],
                class_names = iris.target_names,
                rounded = True, filled = True)

# convert a dot file to a png/pdf
from graphviz import Source

dot_path = "/Users/Desktop/tree.dot"
output = Source.from_file(dot_path, format = "png") # can change png to pdf
output.view()

Другие вопросы по теме