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

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

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

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

Q&A

解決済

1回答

3030閲覧

dtreeviz is not defined について

yasutin

総合スコア41

機械学習

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

0グッド

0クリップ

投稿2023/01/08 07:53

前提

dtreevizを用いた決定木分析を行っている。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • dtreeviz()を使えるようにしたい

発生している問題・エラーメッセージ

NameError: name 'dtreeviz' is not defined

該当のソースコード

python

1from sklearn import tree 2from dtreeviz.trees import * 3import graphviz 4 5df_past = pd.read_csv(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\スパム検出済み.csv") 6 7X_name = ["reputation","age","sex"]#説明変数 8y_name = "spam"#目的変数 9X = df_past[X_name] 10y = df_past[y_name] 11 12dtree = tree.DecisionTreeClassifier(max_depth=2) 13dtree.fit(X,y) 14 15viz = dtreeviz(dtree,X,y, 16 target_name = y_name, 17 feauture_name = X_name, 18 class_names = ["not spam","spam"]) 19 20print(viz) 21

試したこと

・pipを更新して再インストールした。
・graphvizのPATHを確認した。

いずれも改善されませんでした。

補足情報(FW/ツールのバージョンなど)

windows11
IDLE

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

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

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

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

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

melian

2023/01/08 08:23

dtreeviz 関数は dtreeviz.compatibility モジュールに含まれているので、以下の様にして import して試してみて下さい。 from dtreeviz.compatibility import dtreeviz
yasutin

2023/01/08 08:55 編集

実行してみると """ viz = dtreeviz(dtree,X,y, DeprecationWarning: dtreeviz() function is deprecated starting from version 2.0. For the same functionality, please use this code instead: m = dtreeviz.model(...) m.view() Warning (from warnings module): File "C:\Users\Yasu\AppData\Local\Programs\Python\Python310\lib\site-packages\sklearn\base.py", line 450 warnings.warn( UserWarning: X does not have valid feature names, but DecisionTreeClassifier was fitted with feature names <dtreeviz.utils.DTreeVizRender object at 0x0000013CDC4F41F0> """ とでてきたので、 """ viz = dtreeviz(dtree,X,y, target_name = y_name, feature_names = X_name, class_names = ["not spam","spam"]) print(viz) """ ↑この部分を 下のように変えました。 """ m = dtreeviz.model(dtree,X,y, target_name = y_name, feature_names = X_name, class_names = ["not spam","spam"]) m.view() """ しかし、以下のエラーメッセージが表示されました。 """ m = dtreeviz.model(dtree,X,y, AttributeError: 'function' object has no attribute 'model' """ 何がいけないのでしょうか。。。
yasutin

2023/01/08 08:51

dtreeviz.model()の引数が違うのでしょうか。
melian

2023/01/08 08:55

どうやら dtreeviz のバージョンアップで API が変更になった様ですね。先程の、 from dtreeviz.compatibility import dtreeviz を削除して、単に import dtreeviz として、m = dtreeviz.model(dtree,X,y, ...) としてみて下さい。
yasutin

2023/01/08 09:00

""" UserWarning: X does not have valid feature names, but DecisionTreeClassifier was fitted with feature names """ このようなエラーメッセージが出てきましたが、X = df_past[X_name] としているのがいけないのでしょうか?
melian

2023/01/08 09:11

調べてみると、X がデータフレームの場合に、そのワーニングメッセージが表示される様です。なので、X を X.values に変更して試してみて下さい。
yasutin

2023/01/08 09:16

おそらくできたようです! 青文字で下のように出てきたのですが、これはどのようにすれば閲覧できますか? <dtreeviz.trees.DTreeVizAPI object at 0x000002536E82B550>
melian

2023/01/08 10:26

view メソッドがあるので、 viz.view() としてみて下さい。
yasutin

2023/01/08 12:21

viewメソッドを実行したものをshowメソッドで実行するらしいです。 なので """ m_view = m.view() m_view.show() """ となります。これでできました!
yasutin

2023/01/08 12:21

ベストアンサーにしたいので回答よろしくお願いします。
melian

2023/01/08 12:33

ありがとうございます、回答しました。
guest

回答1

0

ベストアンサー

※ コメントから転記

dtreeviz のバージョンアップに伴って API が変更になった様なので、以下の様にします。

python

1import dtreeviz 2 3m = dtreeviz.model(dtree, X.values, y, ...)

X がデータフレームの場合に、以下のワーニングメッセージが表示されるので X.values(numpy.ndarray)を渡します。

python

1UserWarning: X does not have valid feature names, but DecisionTreeClassifier was fitted with feature names

投稿2023/01/08 12:33

melian

総合スコア19714

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問