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

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

ただいまの
回答率

90.49%

  • Python 3.x

    6843questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

python 決定木グラフ

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 433

yuyu127

score 16

pythonの決定木グラフの出力がうまくいかず困っております。
決定木自体はできております。

以下のようなエラーが出るのですが、解決方法ありますでしょうか。

import pydotplus
from sklearn.externals.six import StringIO
dot_data = StringIO()

from sklearn import tree

tr = tree.DecisionTreeClassifier(random_state=0)
tr.fit(X_train, Y_train)

tree.export_graphviz(tr, out_file="tree.dot")

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())


(出力)
^
Expected {'graph' | 'digraph'} (at char 0), (line:1, col:1)

graph.write_pdf("graph.pdf")

(出力)

AttributeError                            Traceback (most recent call last)
<ipython-input-102-5f6f2882416d> in <module>()
----> 1 graph.write_pdf("graph.pdf")

AttributeError: 'NoneType' object has no attribute 'write_pdf'

よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

sklearn.tree.export_graphviz — scikit-learn 0.19.1 documentation

Returns:    
dot_data : string

String representation of the input tree in GraphViz dot format. Only returned if out_file is None.

らしいので、こう書き換えてみてください。

dot_str = tree.export_graphviz(tr, out_file=None)

graph = pydotplus.graph_from_dot_data(dot_str)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/17 13:08

    hayataka2049さん
    ありがとうございます。

    その後、「graph.write_pdf("graph.pdf")」とすると
    →InvocationException: GraphViz's executables not found
    というエラーが出てしまい、http://ruby.kyoto-wu.ac.jp/info-com/Softwares/Graphviz/を参考にしたのですが、うまくいきません。
    解決方法はありますでしょうか。

    キャンセル

  • 2018/04/17 13:21

    osと環境がわからないとなんともいえません。graphvizがうまく動いていないのは確実なので、その線でいろいろ整えてあげる必要があるみたい。
    恐らくこの辺を参考にやれば上手くいくんじゃないですかね。ちょっと強引な方法みたいですけど
    python3でscikit-learnの決定木を画像出力しようとしたら,graphviz's executablesエラーが出た - Qiita https://qiita.com/sh_tech_/items/8d3279c63fa98b21f879

    キャンセル

  • 2018/04/17 20:04

    hayataka2049さん
    情報ありがとうございます。
    このあたりの環境構築が苦手でうまくいってませんが、もう少し調べようと思います。

    キャンセル

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    AttributeError: 'Series' object has no attribute '...

    Python3を使っております。 数日前からPythonを始め,matplotlibによるグラフ作成を行いました。 今までCしか使ったことがなく、エラーの内容を調べてみてもうま

  • 解決済

    AttributeError: 'Cifar10Reader' object has no attr...

    AttributeError: 'Cifar10Reader' object has no attribute 'bytestream'  のエラー が出ました。 reader.

  • 解決済

    グラフへの自動プロット

    いつもお世話になっております。 前提・実現したいこと プログラム(グラフ)を実行した状態のままCSVファイル(aiueo.csv)に値を追加(削除)した時に実行中のファイルに値

  • 受付中

    AttributeError: 'module' object has no attribute '...

    githubのpandas-devのソースコードを読んでいます。 1 import pandas as pd 2 import inspect 3 import r

  • 解決済

    python棒グラフの順番

     前提・実現したいこと 数値とラベルを持つあるデータをについて、数値でソートして その結果を棒グラフとして出力したいと思っています。  発生している問題・エラーメッセージ ソー

  • 解決済

    attributeErrorの解決策

    スクレイピングのプログラムを作っています。 URLからリンク先のURLをexcelにリスト化して入れるものです。 リンク先のURLの抽出までは出来るのですが、excelに出力しよう

  • 解決済

    AttributeError: 'MultiIndex' object has no attribu...

    transform_data=transform_vector(stock_total)とエラーが出ました。

  • 解決済

    Pythonで他のファイルをimportで読み込む方法

     前提・実現したいこと Pythonにおいて,親ディレクトリの親ディレクトリの子ディレクトリにあるファイルをimportしたいです. ディレクトリ構造 |________dir

同じタグがついた質問を見る

  • Python 3.x

    6843questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。