我在相同的数据集上运行R部分,但列的顺序不同,我得到的结果不同。
这是我的数据集
Home.Owner Marital.Status Annual.Income Default
1 Yes Single 125 No
2 No Married 100 No
3 No Single 70 No
4 Yes Married 120 No
5 No Divorced 95 Yes
6 No Married 60 No
7 Yes Divorced 220 No
8 No Single 85 Yes
9 No Married 75 No
10 No Single 90 Yes
这是代码
a<-read.csv("ab.csv")
library(rpart)
library(rpart.plot)
model1<-rpart(Default ~.,data =a,method = "class",minsplit = 1,minbucket = 1
,parms=list(split=c("information") ))
rpart.plot(model1)
结果:
#changing column order
b<-a[,c(4,3,2,1)]
# running same process
model2<-rpart(Default ~.,data =b,method = "class",minsplit = 1,minbucket = 1
,parms=list(split=c("information") ))
rpart.plot(model2)
唯一改变的是列的顺序。
答案 0 :(得分:1)
这里没有错。这发生了,我可以解释原因。
请注意,这两棵树与第一次拆分不同。这是我们必须理解的。 rpart
使用Gini Impurity来决定用于拆分数据的变量。一次使用Marital Status
,另一次使用Annual Income
。仔细看看每次拆分发生的事情。当它在Marital Status
上拆分时,它创建了两个节点,其中一个节点有40%的数据且没有错误。另一个节点有60%的数据和50%的错误。当它在annual income
上拆分时,它产生完全相同的分布:一个节点有40%的数据且没有错误;另一个节点有60%的数据和50%的错误。这两个分裂都产生相同的基尼杂质。这是两个属性之间的联系。所以rpart
在两者之间作出任意选择。它选择第一个,因此依赖于属性顺序。