【发布时间】:2019-12-05 12:27:48
【问题描述】:
这是我的代码
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
dataset = load_iris()
X_train,X_test,y_train,y_test = train_test_split(dataset.data,dataset.target,test_size=0.3)
reg = DecisionTreeClassifier(max_depth=1)
reg.fit(X_train,y_train)
print(reg.predict(X_test))
我已经为训练集添加了树的图像,在这里你可以看到在错误的情况下,数据集的值 [0,39,38] 分别指向 0、1、2 的输出。因此,从假数据集 1 成为输出的可能性最高。决策树应该根据树对 0 或 1 进行分类,但我也可以在预测中看到 2。那么,sklearn如何在什么条件下选择false set上的类来预测输出。
【问题讨论】:
-
这是错误的一面,不是吗?在那之后,由于基尼指数,从那里开始几乎有 50-50 的机会。
-
这不等于问“sklearn 决策树对 D=0 的两个类会做什么”?我认为是这样,在这种情况下,每个班级的机会将根据发生的情况,并由大多数人做出决定(这与机会相对应)。
-
D=1:如果petal_length 预测0(所有以petal_lenght预测1。这对应于每个叶子的“值”,即每个类在树的确切分支上出现的次数。拿它,除以值的总和,你会得到每个类的经验概率,条件是分支。
-
此类树的优化请看en.wikipedia.org/wiki/C4.5_algorithm(今天更常用的是为决策树实现梯度提升的XGBoost算法)。根据定义,这就是 ID3 和 C4.5 优化的工作原理,也是分支和标签之间互信息的 Gini 指标(参见 en.wikipedia.org/wiki/Decision_tree_learning#Gini_impurity)
-
如果您问为什么它在预测中也显示 2,这可能是由于 SKlearn 功能和分隔符选择中实施的随机化,请参阅stackoverflow.com/questions/21391429/…
标签: python machine-learning scikit-learn data-science