3

全て!

Python でのランダム フォレストの実装についてアドバイスをくれる人はいますか? 理想的には、分類器に関するできるだけ多くの情報を出力するものが必要です。特に:

  1. トレーニング セットのどのベクトルを使用して各決定木をトレーニングするか
  2. 各ツリーの各ノードでランダムに選択される機能、このノードで終了するトレーニング セットのサンプル、分割のために選択される機能、および分割に使用されるしきい値

かなりの数の実装を見つけました。最もよく知られている実装はおそらく scikit のものですが、そこで (1) と (2) を実行する方法が明確ではありません (この質問を参照)。openCV からのものを除いて、他の実装にも同じ問題があるようですが、それは C++ にあります (python インターフェイスはランダム フォレストのすべてのメソッドをカバーしているわけではありません)。

(1)と(2)を満たすものを誰か知りませんか? あるいは、scikit の実装を改善して機能 (1) と (2) を取得する方法はありますか?

解決済み: sklearn.tree._tree.Tree のソース コードを確認しました。適切なコメントがあります (ツリーを完全に説明しています)。

 children_left : int*
    children_left[i] holds the node id of the left child of node i.
    For leaves, children_left[i] == TREE_LEAF. Otherwise,
    children_left[i] > i. This child handles the case where
    X[:, feature[i]] <= threshold[i].

children_right : int*
    children_right[i] holds the node id of the right child of node i.
    For leaves, children_right[i] == TREE_LEAF. Otherwise,
    children_right[i] > i. This child handles the case where
    X[:, feature[i]] > threshold[i].

feature : int*
    feature[i] holds the feature to split on, for the internal node i.

threshold : double*
    threshold[i] holds the threshold for the internal node i.
4

1 に答える 1