コメントはまだありません概要Pythonにはscikit-learnという便利な機械学習モジュールがあり、これを用いて決定木学習が可能です。学習結果や予測結果には学習データや予測データが木のどのノード(リーフ)に辿り着いたかの情報までは含まれておらず、何とか取得したかったので調べたところで、簡単にできたので結果をメモしておきます。以降では、scikit-learnが持っているサンプルデータ(iris)を使って決定木学習をしたデータを対象に確認していきます。過去記事を参考に決定木を画像化するとこんな感じ。残念ながら、clfのオブジェクトにはそれぞれのデータがどのノードに辿り着いたかは含まれていません。ソースコードを追ってみると、どうやら学習や予測部分はCで処理されており、Pythonから簡単に取得することは難しそうなことが分かりました。clfオブジェクトにはapplyというメンバ関数がおり、これを使うことで、新しく予測を実施し、各予測対象データがどのノードに辿り着くかを取得することが出来ることが分かりました。dtype=int64)irisのデータは150行あるので、全部をapplyすると150個の結果が返ってきます。上記で1とか5とか書いている値が辿り着いたノード番号です。このノード番号が決定木のどの部分に相当するか等は下記でまとめていますので参考にしてみてください。Scikit-learnで学習した決定木構造の取得方法まとめ短いですが、各データの到達ノードを知る方法について調査結果をメモしておきました。clf.tree_.applyがキーワードです。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。プロフィール兵庫県在住の30代データサイエンティスト。Pythonを使った機械学習等によるデータ分析や、ウェブアプリ等のシステム開発に取り組んでいます。