首页 文章

Scikit学习随机森林 - 单树的特征

提问于
浏览
1

关于随机森林及其在scikit中的实现,我有一个非常具体的问题 . 我建造了一片森林,到目前为止预测工作得很好 . 但是,我需要知道在安装森林后哪些 particular 特征最终会出现在单树的叶子中 .

我已经理解了层次结构,其中随机森林构建了单个决策树,我可以通过"estimators_"属性访问它,并且在每个决策树都有一个"tree_"属性的路上 . 在这个树中,我找到有关特定节点,叶子和分裂的信息,但是我无法找到 which specific features end up in a leaf ,甚至找不到哪个特征分配给那个特定的树?

只是为了澄清我不打算手动分析树节点,但我希望有一个相似性度量,基于特定的一组特征在树的叶子中结束的频率 .

非常感谢你 !

附:为了防止有人感兴趣,我从这篇论文中得到了这个相似性度量的想法:http://www.sciencedirect.com/science/article/pii/S1053811912009834

edit :好的,我还有更进一步 . 显然有一个合奏的方法"Finds the terminal region (=leaf node) for each sample in X."这可以在这里找到(第2465行)https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_tree.pyx

我已经摆弄,但无法完全理解代码 . 我可以制作rf.apply(np.array([i,j])),其中i,j是用于拟合模型的2D矩阵中的样本编号,它返回它所在的叶子 . 好极了!但唯一奇怪的是我可以使用比实际样本更大的数字吗?如果索引是大的,或者我做错了,它是否假设最后一个样本?

出于测试目的,我制作了一个10x5矩阵,但我可以索引rf.apply(np.array([500,2333]))而不会出错?

抱歉,我不完全确定如何向此功能提供数据 .

1 回答

相关问题