Python 是否可以在scikit learn的DecisionTreeGressor中检索每个叶中的列车行id?
目前,我可以在我的培训样本上检索我的测试样本的每一行最有可能属于的每个节点的ID:Python 是否可以在scikit learn的DecisionTreeGressor中检索每个叶中的列车行id?,python,scikit-learn,decision-tree,Python,Scikit Learn,Decision Tree,目前,我可以在我的培训样本上检索我的测试样本的每一行最有可能属于的每个节点的ID: tree.tree.apply(np.array(X_test).astype(np.float32))其中X_test表示决策树的输入 但是,对于我生长的树的每一片叶子,我想获得其中包含的训练样本的ID。这样我就可以知道哪一个训练样本与一个测试输入最为相似。我最后对训练样本使用了“应用”函数来获取它所属的叶id def get_nearest_points(self, tr, input_train): i
tree.tree.apply(np.array(X_test).astype(np.float32))
其中X_test表示决策树的输入
但是,对于我生长的树的每一片叶子,我想获得其中包含的训练样本的ID。这样我就可以知道哪一个训练样本与一个测试输入最为相似。我最后对训练样本使用了“应用”函数来获取它所属的叶id
def get_nearest_points(self, tr, input_train):
inside_leaves = {}
tmp = tr.tree_.apply(np.array(input_train).astype(np.float32))
leaves_list = set(tmp)
for leaf in leaves_list:
inside_leaves[leaf] = [idx for idx, elt in enumerate(tmp) if elt == leaf]
return inside_leaves
现在,inside_leaves是一个字典,它为每个leaf_id包含该leaf中涉及的行的列表