[解決済み] scikit-learnで決定木を可視化する
2022-03-08 01:12:27
質問
Pythonでscikit-learnを使って簡単なDecision Treeを設計し、以下のように可視化しようとしています(Windows OSでPython 2.7.3とAnacondaのIpython Notebookを使用しています)。
from pandas import read_csv, DataFrame
from sklearn import tree
from os import system
data = read_csv('D:/training.csv')
Y = data.Y
X = data.ix[:,"X0":"X33"]
dtree = tree.DecisionTreeClassifier(criterion = "entropy")
dtree = dtree.fit(X, Y)
dotfile = open("D:/dtree2.dot", 'w')
dotfile = tree.export_graphviz(dtree, out_file = dotfile, feature_names = X.columns)
dotfile.close()
system("dot -Tpng D:.dot -o D:/dtree2.png")
しかし、以下のようなエラーが発生します。
AttributeError: 'NoneType' object has no attribute 'close'
以下のブログ記事を参考にさせていただいています。 ブログ記事リンク
以下のstackoverflowの質問も同様にうまくいかないようです。 質問内容
scikit-learnで決定木を可視化する方法について、どなたか教えていただけませんか?
どのように解決するのですか?
sklearn.tree.export_graphviz
は何も返さないので、デフォルトでは
None
.
することで
dotfile = tree.export_graphviz(...)
に割り当てられていたオープンファイルオブジェクトを上書きします。
dotfile
そのため、ファイルを閉じようとするとエラーが発生します(現在は
None
).
この問題を解決するには、コードを次のように変更します。
...
dotfile = open("D:/dtree2.dot", 'w')
tree.export_graphviz(dtree, out_file = dotfile, feature_names = X.columns)
dotfile.close()
...
関連
-
PythonはWordの読み書きの変更操作を実装している
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Pythonショートビデオクローラーチュートリアル
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] scikit-learnの決定木から決定規則を抽出する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
opencvとpillowを用いた顔認証システム(デモあり)
-
pythonを使ったオフィス自動化コード例
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み] scikit-learnの決定木から決定規則を抽出する方法は?