質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1667閲覧

決定木の可視化方法(エラー表示:ImportError: cannot import name 'graph_from_dot_data' from 'pydotplus')

Yusuke_O

総合スコア7

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/20 15:43

###前提・実現したいこと
決定木分析をしようとしたところ、掲題の「ImportError: cannot import name 'graph_from_dot_data' from 'pydotplus'(C:\ProgramData\Anaconda3\lib\site-packages\pydotplus_init_.py)」とエラー表示が発生してしまいます。
検索してみたところ、同様の質問も見受けられなかったため質問させていただきました。

Pythonによるあたらしいデータ分析の教科書を用いてPythonを勉強している初学者です。
初心者でも分かるようにご回答いただければ幸いです。

###発生している問題・エラーメッセージ
ImportError: cannot import name 'graph_from_dot_data' from 'pydotplus' (C:\ProgramData\Anaconda3\lib\site-packages\pydotplus_init_.py)

###該当のソースコード
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

iris = load_iris()
X, y = iris.data, iris. target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=123)

tree = DecisionTreeClassifier(max_depth=3)
tree.fit(X_train, y_train)

! pip install graphviz
! pip install pydotplus

from pydotplus import graph_from_dot_data
from sklearn.tree import export_graphviz

dot_data = export_graphviz (tree, filled=True,
rounded=True,
class_names=["Setona",
"Vercicolor",
"virginica"],
feature_names=["Sepal Length",
"Sepal Width",
"Petal Length",
"Petal Width"],
out_file=None)

graph = graph_from_dot_data (dot_data)
graph.write_png("test1.png")

###補足情報(FW/ツールのバージョンなど)
Anaconda3でJupyternotebook6.0.0を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2020/01/20 15:51

以下を実行して出力される結果を教えて下さい import pydotplus print(pydotplus.__file__) print(dir(pydotplus))
Yusuke_O

2020/01/20 15:59

早速のアドバイスありがとうございます。以下が表示されました。 C:\ProgramData\Anaconda3\lib\site-packages\pydotplus\__init__.py ['CaselessLiteral', 'CharsNotIn', 'Combine', 'DefaultStatement', 'Forward', 'Group', 'Literal', 'OneOrMore', 'Optional', 'PY3', 'P_AttrList', 'ParseException', 'ParseResults', 'QuotedString', 'Word', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'add_defaults', 'add_elements', 'alphanums', 'basestring', 'cStyleComment', 'codecs', 'division', 'do_node_ports', 'get_port', 'graph_definition', 'graphparser', 'graphviz', 'nestedExpr', 'nums', 'parse_dot_data', 'parser', 'print_function', 'printables', 'push_attr_list', 'push_default_stmt', 'push_edge_stmt', 'push_graph_stmt', 'push_node_stmt', 'push_subgraph_stmt', 'push_top_graph_stmt', 'pydotplus', 'pyparsing_version', 'restOfLine', 'sys', 'top_graphs', 'update_parent_graph_hierarchy']
tiitoi

2020/01/20 16:09

pydotplus がどのようにしてインストールしましたか? 自分の環境 (pydotplus 2.0.2、Python 3.7) では、graph_from_dot_data がその2個目の出力にあるので、それがないということはバージョンが古いかもしれません。 pip install -U pydotplus で pydotplus をアップデートしてみてはどうでしょうか
Yusuke_O

2020/01/21 04:35

ご確認ありがとうございます。Graphvizはmsi形式でダウンロードいたしました。(2.38)(外部コマンドのためインターネット上からダウンロードしています)また、pydotplusは上記コード上でインストールしました。 ご指摘いただいたpip install -U pydotplusで、アップデートもしましたが、エラーメッセージは変わりませんでした。役に立つか分かりませんが、アップデート時のコメントも下記に記載します。 Requirement already up-to-date: pydotplus in c:\programdata\anaconda3\lib\site-packages (2.0.2) Requirement already satisfied, skipping upgrade: pyparsing>=2.0.1 in c:\programdata\anaconda3\lib\site-packages (from pydotplus) (2.4.0) Note: you may need to restart the kernel to use updated packages.
tiitoi

2020/01/21 04:44

だとすると、R.Shigemori さんがご指摘されているように pydotplus のインストールに失敗している可能でしょうかね pydotplus をインストールするときになにかエラーメッセージのようなものは出ませんでしたか? 覚えてないようであれば、一度 pydotplus をアンインストールして、もう一度インストールして確認してみるといいかもしれません。 またコマンドプロンプトで where dot と打って実行し、Graphviz のパスが出てくるか確認して見てください パスが出てこなければ環境変数 PATH に Graphviz の実行ファイルがあるディレクトリが登録されていない可能性があります
guest

回答1

0

ベストアンサー

まず、Graghvizはpythonと独立したソフトウェアなのでpipではインストールできません。以下のurlから自身の環境に合ったものをダウンロードしてインストールしてください。

http://www.graghviz.org

次にpydotplusをインストールします。pydotplusはpythonからGraghvizを起動するインターフェースです。おそらく、Graghvizのインストール未済のため、pydotplusのインストールに失敗していると思われます。

詳しい手順などは「決定木 可視化 graghviz」で検索するといろいろ見つかるので、試した結果わからないことがあれば、質問してください

投稿2020/01/20 23:12

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yusuke_O

2020/01/21 04:48

ご回答ありがとうございます。 Graghvizはpythonと独立したソフトウェアなのでpipではインストールできません。以下のurlから自身の環境に合ったものをダウンロードしてインストールしてください。 ⇒こちらは認識しており、あらかじめGraphvizはmsi形式でダウンロードしていましたが(バージョンは2.38)、このようなエラーが出て困っている状況です。スタート画面でGraphvizを検索すると出てくるのでダウンロード自体はできている認識です。
R.Shigemori

2020/01/21 05:56

そうするとpathの問題かもしれません。 確かGraghvizインストール後に環境変数いじった記憶があります。念のため、今のpydotplusをアンインストールして環境変数を設定して再インストールしてはいかがでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問