Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 在分类树Python 2.7中查找预测响应的相应样本分数_Python 2.7_Tree_Scikit Learn_Classification_Predict - Fatal编程技术网

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

Python 2.7 在分类树Python 2.7中查找预测响应的相应样本分数,python-2.7,tree,scikit-learn,classification,predict,Python 2.7,Tree,Scikit Learn,Classification,Predict,我知道如何使用sklearn拟合树。我还知道如何使用predict或predict\u proba进行预测。然而,对于预测,我想得到(原始)样本分数,而不是概率 例如,在拟合树中,两个叶节点的a类概率可能都为0.2,但一个为2/10,而另一个为400/2000。现在,如果我使用这个树,我希望得到像[4002000]或[2,10]这样的值,而不仅仅是0.2 n\u node\u sample和value属性将此类信息存储在拟合的树对象中,但我不知道如何在预测中从中提取适当的值 提前感谢。您可以使用

我知道如何使用
sklearn
拟合树。我还知道如何使用
predict
predict\u proba
进行预测。然而,对于预测,我想得到(原始)样本分数,而不是概率

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

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


提前感谢。

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

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\uu32>将作为
tree.apply“公共”并负责数据类型转换(到float32)。请参阅。

您可以使用树的
tree.tree\应用
方法找出该点最终位于哪个叶中,然后使用
tree.tree\值
数组检查该叶中每个类的样本数:

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\uu32>将作为
tree.apply“公共”并负责数据类型转换(到float32)。看