【问题标题】:Could not understand the meaning of decision tree parameters无法理解决策树参数的含义
【发布时间】:2015-01-05 17:47:38
【问题描述】:

我有3个标签(男、女、na),表示如下:

import numpy as np
from sklearn import tree

labels = [0,1,2]

每个标签由 3 个特征(身高、体重和年龄)定义为训练数据:

男性训练数据:

male_height = np.array([111,121,137,143,157])
male_weight = np.array([60,70,88,99,75])
male_age = np.array([41,32,73,54,35])

males = np.vstack([male_height,male_weight,male_age]).T

女性训练数据:

female_height = np.array([91,121,135,98,90])
female_weight = np.array([32,67,98,86,56])
female_age = np.array([51,35,33,67,61])

females = np.vstack([female_height,female_weight,female_age]).T

不可用的训练数据:

na_height = np.array([96,127,145,99,91])
na_weight = np.array([42,97,78,76,86])
na_age = np.array([56,35,49,64,66])

nas = np.vstack([na_height,na_weight,na_age]).T

所以,完整的训练数据是:

trainingData = np.vstack([males,females,nas])

完整的标签是:

labels =  np.repeat(labels,5)

我要制定决策树规则,所以我拟合如下:

clf = tree.DecisionTreeClassifier()
clf = clf.fit(trainingData, labels)

我制作的树在这里: 但是,我无法理解这棵树的含义。 有人可以帮助我了解图像中显示的以下内容的含义,以及关于我的示例数据集:

samples, value, gini, X[0], X[1], X[2]

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    在树的每一层,算法都选择了一个特定的特征进行分区。选择此选项是为了根据类别对数据进行最佳拆分。因此选择了第一个分割高度,因此'X[0] 105 的样本) 我认为“价值”显示了分类。它总是在叶子节点上。例如,value = [0, 1, 0] 表示样本将被分类为女性 'gini' 如果不查看此特定决策树实现的细节,我不确定

    【讨论】:

    • 感谢 Mark Purser 的精彩解释。我的最终目标是在 Python 中创建 if else 语句。所以我问了新问题,你能帮我解决我的新问题吗? stackoverflow.com/questions/26828265/…
    • 我很好奇当你有三个班级时,最佳分割意味着什么?对于两个类,我会想象选择一个变量和一个阈值,当 var=T 时自动最大化 Prob(class2)。您只需要尝试所有变量和一堆阈值。但是三级案例让我很困惑......
    猜你喜欢
    • 2014-06-15
    • 2016-04-24
    • 2020-06-05
    • 2016-08-21
    • 2018-01-04
    • 2020-07-28
    • 2012-11-11
    • 2017-04-17
    相关资源
    最近更新 更多