gpt4 book ai didi

r - 运行 randomForest 的因子变量和字符变量之间的差异

转载 作者:行者123 更新时间:2023-12-02 02:46:56 25 4
gpt4 key购买 nike

如果我运行 randomForest(y ~ x, data = df) 模型,x 会得到超过 53 个级别的因子变量

Error in randomForest.default(m, y, ...) : 
Can not handle categorical predictors with more than 53 categories.

如果我将 x 更改为 as.character(x) 并重新运行,则不会出现错误。

幕后有什么区别?这两种类型不是都被视为分类变量吗?

最佳答案

我猜每个类别的名称都是一个数值(因为randomForest()不能处理由字符组成的字符类)。 randomForest() 将由数值组成的字符类视为数字变量(即数字类),而不是分类变量(即 >因子类)。如果更改每个类别的名称,结果也会改变。

这是我的例子。如果 x_ 是因子类,则返回相同的结果。如果 x_ 是整数类字符类(但由数值组成),则输出取决于该值。 as.character(x) 得到的结果是明显错误的!!

set.seed(1); cw <- data.frame(y = subset(ChickWeight, Time==18)$weight, x1 = sample(47) )
cw$x2 <- as.factor(cw$x1)
cw$x3 <- as.character(cw$x1)
cw$x4 <- 47:1
cw$x5 <- as.factor(47:1)
cw$x6 <- as.character(47:1)
cw$x7 <- c(letters, LETTERS[1:21])
cw$x8 <- as.factor(cw$x7)
# %Var explained # class(x_)
set.seed(1); randomForest(y ~ x1, cw) # -29.61 integer1
set.seed(1); randomForest(y ~ x2, cw) # -0.42 factor
set.seed(1); randomForest(y ~ x3, cw) # -29.61 character (numeric name1)
set.seed(1); randomForest(y ~ x4, cw) # -31.78 integer2
set.seed(1); randomForest(y ~ x5, cw) # -0.42 factor
set.seed(1); randomForest(y ~ x6, cw) # -31.78 character (numeric name2)
set.seed(1); randomForest(y ~ x7, cw) # error character (letter name)
set.seed(1); randomForest(y ~ x8, cw) # -0.42 factor

关于r - 运行 randomForest 的因子变量和字符变量之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37827087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com