首页 > 解决方案 > 随机森林中的训练和测试集相同的变量不同的类

问题描述

我使用randomForestR 中的包使用训练集来训练随机森林模型。训练集中的变量是字符类,我将其转换为as.numeric(factor()).

但是,测试集中的相同变量仍然是字符。但我惊讶地发现,我仍然可以从我训练的随机森林模型中得到预测,即使那个变量是一个字符类。而且我还发现,如果我也将测试集中的那个变量转换为as.numeric(factor()),那么测试集上的表现是不同的。

那么有谁知道 R 解释和随机森林模型如何读取和处理测试集中的字符变量,而训练集中的相同变量不是字符类?

提前致谢!!

标签: classcharacterrandom-foresttraining-datatest-data

解决方案


这并不过分令人惊讶。您的原始变量是可以转换为数字的字符串。所以 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"))

推荐阅读