全て!
Python でのランダム フォレストの実装についてアドバイスをくれる人はいますか? 理想的には、分類器に関するできるだけ多くの情報を出力するものが必要です。特に:
- トレーニング セットのどのベクトルを使用して各決定木をトレーニングするか
- 各ツリーの各ノードでランダムに選択される機能、このノードで終了するトレーニング セットのサンプル、分割のために選択される機能、および分割に使用されるしきい値
かなりの数の実装を見つけました。最もよく知られている実装はおそらく 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.