scikit-learn决策树回归:检索叶子的所有样本(不是平均值)

Posted

技术标签:

【中文标题】scikit-learn决策树回归:检索叶子的所有样本(不是平均值)【英文标题】:scikit-learn Decision trees Regression: retrieve all samples for leaf (not mean) 【发布时间】:2017-12-03 17:58:43 【问题描述】:

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

【问题讨论】:

你需要这样的东西:scikit-learn.org/stable/auto_examples/tree/… 可以使用apply获取每个样本的叶子id; see here. 感谢您的回复。我对此进行了编码,并获得了与使用 graph_viz 导出树时显示的相同的平均值,这很好。然而,虽然紧凑,它似乎并不高效。实际上,我将数据拟合到一棵树中,每个叶节点最终都会得到一个样本子集。然后我再次遍历数据以记录它落入哪个叶节点,这样我就可以获得相应的目标。但是该数据应该已经存储在某个地方的叶节点中吗?它似乎并不慢,所以可能不值得担心重复。 不,在叶子中,只存储手段和计数。我认为,复制是可以的。 【参考方案1】:

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

【讨论】:

虽然这可能是解决问题的宝贵提示,但一个好的答案也可以证明解决方案。请edit 提供示例代码来说明您的意思。或者,考虑将其写为评论。

以上是关于scikit-learn决策树回归:检索叶子的所有样本(不是平均值)的主要内容,如果未能解决你的问题,请参考以下文章

以 png 或 pdf 可视化 scikit-learn/sklearn 多输出决策树回归

编辑 scikit-learn 决策树

编辑 scikit-learn 决策树

决策树算法之分类回归树 CART(Classification and Regression Trees)

scikit-learn决策树算法类库使用小结

scikit-learn 默认使用哪种决策树算法?