【问题标题】:How R automatically coerces character input to numeric?R如何自动将字符输入强制转换为数字?
【发布时间】:2020-10-19 11:07:16
【问题描述】:

我正在为我的数据训练 randomForest 包中的随机森林模型。有些变量属于字符类。我很确定randomForest 只会将因子和数字类作为输入。所以我认为 R 会自动将字符强制转换为数字。

为了让我知道这可能如何影响我的建模结果,有谁知道 R 如何自动将字符强制转换为数字类(如算法/规则)?或者我可以查看的任何源代码?

我使用的是 R 版本 4.0.1。

提前致谢。

更新: 我检查了使用

getTree(mod,1,labelVar=TRUE)

而且我可以看到,如果将这些字符变量转换为因子,那么输出中的“分割点”是一个整数(这意味着它是一个分类变量(参见:https://www.rdocumentation.org/packages/randomForest/versions/4.6-14/topics/getTree))。但是如果不转换成因子,那么输出中的“分裂点”就不是整数了。

所以我猜是 R 将这些字符变量的值强制转换为数值?但是怎么做呢?

【问题讨论】:

  • 我认为,它们被视为虚拟变量(一种热编码)。换句话说,一和零。

标签: r character numeric coerce


【解决方案1】:

目前不确定 R 中的随机森林,但我有点相信它只需要factors。如果它也需要characters,它会将它们转换为因子,而不是数字。

并且在R中没有从字符到数字的明确转换。

【讨论】:

  • 我猜你认为它只需要因素的结论是不正确的。看到这个帖子:stackoverflow.com/questions/63186926/…
  • 我使用getTree(mod,1,labelVar=TRUE) 进行了检查,我可以看到如果将这些字符变量转换为因子,那么输出中的“分割点”是一个整数(这意味着它是一个分类变量(参见:rdocumentation.org/packages/randomForest/versions/4.6-14/topics/…))。但是如果不转换为因子,那么输出中的“分裂点”就不是整数。所以我猜是 R 将这些字符变量的值强制转换为数值?但是怎么做呢?
  • 再次猜测:因子基本上是整数向量,其中每个级别对应一个level。所以,我的猜测是如果你有一个字符向量c("1", "2", "3", "1"),但级别是c("3", "2", "1"),那么从因子向量产生的整数就是c(3, 2, 1, 3)。检查您处理的因素的水平 (levels(your_vector)) - 也许它会有所帮助。
猜你喜欢
  • 2014-04-10
  • 2013-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
相关资源
最近更新 更多