如何使用 partykit 库中的 partysplit 函数在一个 child 节点中进行多个因子级别的拆分
How do you use the partysplit function from partykit library to make a split with multiple factor levels in one child node
我正在用 R 制作一个手动决策树工具,但在分类拆分方面遇到了问题。
对于下面的 table df
,我想对变量 cat1
进行拆分,使得级别 1、2 和 5 在 child 1 和第 3 级和第 4 级在 child 2
有没有办法使用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))
对于分类变量,最简单的方法是将 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"
我正在用 R 制作一个手动决策树工具,但在分类拆分方面遇到了问题。
对于下面的 table df
,我想对变量 cat1
进行拆分,使得级别 1、2 和 5 在 child 1 和第 3 级和第 4 级在 child 2
有没有办法使用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))
对于分类变量,最简单的方法是将 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"