【问题标题】:training and test set same variable not same class in randomForest随机森林中的训练和测试集相同的变量不同的类
【发布时间】:2020-11-25 12:12:15
【问题描述】:

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

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

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

提前致谢!!

【问题讨论】:

    标签: class character random-forest training-data test-data


    【解决方案1】:

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

    【讨论】:

    • 为什么predict(rf, tibble(x = "b")) 给出的结果与最后两个相同?很奇怪
    • 我明白了。它总是返回与最后两个相同的结果
    • 我不确定你的意思。 predict(rf, tibble(x = "b")) 返回错误
    • 我没有。它给出了与最后两个相同的结果
    • 在这种情况下,很可能是您的软件包安装(更新或重新安装所有内容)或系统级别出现问题,随机森林在不同操作系统上的行为不同
    猜你喜欢
    • 2017-11-21
    • 2020-10-31
    • 2019-03-09
    • 2019-08-12
    • 1970-01-01
    • 2017-10-13
    • 2021-01-05
    • 2021-07-10
    • 2017-01-22
    相关资源
    最近更新 更多