如何使用partykit库中的partysplit函数在一个子节点中进行具有多个因子级别的拆分

时间:2018-08-16 15:26:21

标签: r decision-tree party

我在R中制作了一个手动决策树工具,无法进行分类拆分。

对于下面的表df,我想对变量cat1进行拆分,以使级别1、2和5在子级1中,而级别3和4在子级2中< / p>

是否可以使用partysplit进行指定?

df <- data.frame(cat1 = rep(c('A','B','C','D','E'), times = 100))

# This will give 5 child nodes with one level in each node
split1 <- partysplit(varid = 1L, index = 1:5)

# This gives an error because you have to specify index numbers from 1:number of child nodes

split2 <- partysplit(varid = 1L, index = c(1, 2, 5))

1 个答案:

答案 0 :(得分:1)

对于分类变量,最简单的方法是简单地将index设置为每个级别应进入的节点ID的向量。就您而言:

split3 <- partysplit(varid = 1L, index = c(1L, 1L, 2L, 2L, 1L))

然后可以使用函数character_split()提取变量名称并生成合适的标签。这对于检查您是否获得了分割权很方便:

character_split(split3, data = df)
## $name
## [1] "cat1"
## 
## $levels
## [1] "A, B, E" "C, D"