我有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]
答案 0 :(得分:2)
树的每个级别,算法都选择了一个特定的功能来进行分区。选择此选项可根据类别进行最佳数据分割。因此,选择了第一个分割高度,因此'X [0] <= 105'。 'samples'显示数据的分割,因此左边是6个样本(所有高度<= 105的样本)和右边的9个样本(所有那些高度> 105的样本) “价值”我认为显示了分类。它始终位于叶节点上。例如,value = [0,1,0]表示样本将被归类为女性 'gini'我不确定如何不查看这个特定决策树实现的细节