在生成的Scikit Learn决策树中,value属性的含义是什么?

6
我正在关注由Skipper Seabold介绍的Pandas和Scikit learn的优秀演讲
我正在使用他来自UCI成年人名字清理过的数据集
运行此代码并通过graphviz生成树形图像后,我们可以观察到每个节点上都有值数据。
import pandas as pd
from sklearn.tree import DecisionTreeClassifier, export_graphviz

dta = pd.read_csv("data/adult.data.cleaned.csv")

for col in dta:
    if not dta[col].dtype.kind == "O":
        continue
    if dta[col].str.contains("\?").any():
        dta.ix[dta[col].str.contains("\?"), col] = "Other"
        test.ix[test[col].str.contains("\?"), col] = "Other"

dta.income.replace({"<=50K": 0, ">50K": 1}, inplace=True)
test.income.replace({"<=50K": 0, ">50K": 1}, inplace=True)

y = dta.pop("income")
y_test = test.pop("income")

X_train = pd.get_dummies(dta)
X_test = pd.get_dummies(test)

X_test[X_train.columns.difference(X_test.columns)[0]] = 0

dtree = DecisionTreeClassifier(criterion='entropy', random_state=0, max_depth=6)
dtree.fit(X_train, y)
export_graphviz(dtree, feature_names=X_train.columns)
这些value属性代表什么? 编辑:意思是每个节点都有一个value=[x, y]属性。

Final decision tree


你说的“这些属性代表什么意思?”是什么意思?那就是适合你训练数据的决策树。 - skrubber
抱歉,问题中的值部分似乎丢失了,请查看编辑。 - Igor L.
值是在每个节点分割样本的结果。因此,在根节点,32561个样本被分成了两个子节点,分别为24720和7841个样本。 - skrubber
我也曾这样想,但是按照最左边的节点,第二个非根节点(16425、849)的值之和比第一个非根节点(16436)的“左”值更高。 - Igor L.
好的,我的错,它们加起来是节点的“samples”属性,现在我明白了。谢谢。 - Igor L.
1
很酷。在答案中添加了参考。如果觉得有用,请接受。 - skrubber
1个回答

5

“Value”是指检验信息增益的样本如何分割。因此,在根节点上,32561个样本被分为24720和7841个样本。”

来自S.Raschka的详细解释可以在这里找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接