class - 随机森林中的训练和测试集相同的变量不同的类
问题描述
我使用randomForest
R 中的包使用训练集来训练随机森林模型。训练集中的变量是字符类,我将其转换为as.numeric(factor())
.
但是,测试集中的相同变量仍然是字符。但我惊讶地发现,我仍然可以从我训练的随机森林模型中得到预测,即使那个变量是一个字符类。而且我还发现,如果我也将测试集中的那个变量转换为as.numeric(factor())
,那么测试集上的表现是不同的。
那么有谁知道 R 解释和随机森林模型如何读取和处理测试集中的字符变量,而训练集中的相同变量不是字符类?
提前致谢!!
解决方案
这并不过分令人惊讶。您的原始变量是可以转换为数字的字符串。所以 RandomForest 几乎可以肯定就是这样做的。下面的简单示例重现了该问题:
library(tidyverse)
library(randomForest)
df <- tibble::tibble(x = c(1:6), y = 1:6)
rf <- randomForest(y~., df)
# "1" is coerced
predict(rf, tibble(x = "1"))
predict(rf, tibble(x = 1))
# "b" fails
predict(rf, tibble(x = "b"))
推荐阅读
- html - 如何在 .md (markdown) 文件中输入多个空格,以便转换后的 html 显示相同数量的空格?
- c# - unity c# 问题无法使用 transform.position 在统一 c# 脚本中获得敌人的完美位置
- debugging - 我可以从 c++ 中 Visual Studio 的调试器进程中排除内存中的特定数据(结构/向量/等)吗?
- java - 如何使用杰克逊从纯字符串反序列化 Map?
- javascript - “this”关键字在 JavaScript 中前面带有 + 是什么意思
- php - 应用程序未注册用户的 DB 存储设备密钥在哪里
- alexa-skills-kit - 如何在 Alexa 技能中将 axios 模块导入 Alexa Node js 代码。我正在使用 alexa 技能
- javascript - 在第一次渲染时,控制台日志上的数据显示为空
- slack - Slack Web 浏览器和应用程序未在 Ubuntu 上加载
- jupyter-notebook - 如何解决 jupyter notebook 中的 SyntaxError?