r - R randomForest 对数字类和整数类的变量的行为是否相同?

标签 r class random-forest

在 randomForest 包中实现的 R 随机森林算法对数字类和整数类的变量的行为是否相同?

最佳答案

是的,randomForest 实现确实对待整数和数字( double )类似。在 RF 模型看来,特征值只能等于/高于或低于给定的断点,因此数字最初是整数还是 double 都没有关系。

  • randomForest 确实有因子的异常(exception)(与 sklearn.randomForest 相反,后者甚至将因子视为数字)

引用自源代码:randomForest/R/randomForest.default.R -line 60

if (is.data.frame(x)) {
        xlevels <- lapply(x, mylevels) 
        ncat <- sapply(xlevels, length)
        ## Treat ordered factors as numerics.
        ncat <- ifelse(sapply(x, is.ordered), 1, ncat)
        x <- data.matrix(x)
...
}

mylevels 在第 2 行中定义

## mylevels() returns levels if given a factor, otherwise 0.
mylevels <- function(x) if (is.factor(x)) levels(x) else 0
  • 因此,如果 x 中的给定特征列是因子,则 xlevels 记录级别/类别,否则为 0。在低级 C++ 中,如果 xlevels 为 0,则特征列被视为数字,否则被视为因子。将 x 转换为 data.matrix 时,所有特征都将转换为数字。

引用第 194 行

    storage.mode(x) <- "double"

这里x的存储方式设置为double

关于r - R randomForest 对数字类和整数类的变量的行为是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34725766/

相关文章:

r - 最小值 - 使用第二列决胜局

python - 随机森林 - 使空值在决策树中始终有自己的分支

python - 如何在随机森林中绘制树而不显示 "samples"和 "value"?

r - 使用 R 对分组变量进行非线性优化

r - 在R中的向量中查找元素和元素的索引

r - 将quosure转换为R中的字符串

python - Python中定义类变量时如何引用类方法?

c++ - 使用类和函数来提供有关矩形的信息

C++ 释放结构使用的所有内存

r - 你如何改变 R 的 randomForest 中的截止参数?