2017-06-29 19 views
0

我已经开始使用scikit-learn决策树并且目前为止它工作得很好,但我需要做的一件事是检索样本集叶节点的Y值,特别是在运行预测时。给定一个输入特征向量X,我想知道叶节点处相应Y值的集合,而不仅仅是这些值的平均值(或中值)的回归值。当然,我们希望样本均值具有小的变化,但我想提取实际的Y值集合并进行统计/创建PDF。我已经使用了这样的代码how to extract the decision rules from scikit-learn decision-tree? 要打印决策树,但“值”的输出是表示均值的单个浮点数。我有一个很大的数据集,因此将叶子大小限制为例如100,我想访问这100个值...scikit-learn决策树回归:检索所有样本的叶子(不是意味着)

+1

你需要像这样的东西:http://scikit-learn.org/stable/auto_examples/tree/plot_unveil_tree_structure.html#sphx-glr-auto-examples-tree-plot-unveil-tree-structure-py –

+2

你可以使用'apply'来获取每个样本的叶子ID; [见这里。](https://stackoverflow.com/questions/38299015/getting-the-distribution-of-values-at-the-leaf-node-for-a-decisiontreeregressor/38318135#38318135) –

+0

谢谢你这些答复。我将它编码并得到与用graph_viz导出树时显示的相同的意思,所以这很好。不过虽然紧凑,但看起来效率不高。我有效地将数据拟合到一棵树上,并且每个叶节点最终将有一组子样本。然后我再次迭代数据以记录它落入哪个叶节点,以便我可以获取相应的目标。但是这些数据应该已经存储在叶节点的某个地方了?它似乎并不慢,所以也许不值得担心重复。 – user1978816

回答

0

另一种解决方案是使用sklearn DecisionTreeRegressor对象的(未记录的?)特征,即.tree.impurity 它返回每个叶子的值的标准偏差

+0

虽然这可能是解决问题的有价值的提示,但一个好的答案也可以证明解决方案。请[编辑]提供示例代码来展示你的意思。或者,可以考虑将其写为注释。 –