在分类树 Python 2.7 中查找预测响应的相应样本分数

Posted

技术标签:

【中文标题】在分类树 Python 2.7 中查找预测响应的相应样本分数【英文标题】:Finding the corresponding sample fraction for a predicted response in classification trees Python 2.7 【发布时间】:2015-11-21 06:42:33 【问题描述】:

我知道如何使用sklearn 来拟合一棵树。我也知道如何使用predictpredict_proba 进行预测。但是,对于预测,我想获得(原始)样本分数而不是概率。

例如,在一棵拟合树中,两个叶节点对于 A 类的概率可能都为 0.2,但一个为 2/10,而另一个为 400/2000。现在,如果我使用这棵树,我希望得到类似 [400,2000] 或 [2,10] 而不仅仅是 0.2。

n_node_samplevalue 属性将此类信息存储在拟合的树对象中,但我不知道如何在预测中从中提取适当的值。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用树的tree.tree_.apply 方法找出该点最终位于哪个叶子中,然后使用tree.tree_.value 数组检查每个类的样本在该叶子中的数量:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier

iris = load_iris()
tree = DecisionTreeClassifier(max_depth=2).fit(iris.data, iris.target)

leaf = tree.tree_.apply(iris.data[50:51].astype(np.float32))
print(leaf)
# output [3]
print(tree.tree_.value[leaf])
# output [[[  0.  49.   5.]]]
print(tree.predict_proba(iris.data[50:51]))
# output [[ 0.          0.90740741  0.09259259]]

在下一个版本 0.17 中,tree.tree_.apply 将作为tree.apply“公开”,并将负责数据类型转换(到 float32)。见the docs。

【讨论】:

以上是关于在分类树 Python 2.7 中查找预测响应的相应样本分数的主要内容,如果未能解决你的问题,请参考以下文章

决策树分类器的准确性

事件预测 -- 解决分类问题

python分类预测模型的特点

Python数据挖掘—分类—决策树

分类预测决策树

在 ipython 下 Python 2.7 中的 KeyboardInterrupt 不可预测,我怎样才能让它*总是*中止当前评估?