【问题标题】:factors in prediction dataframe for naive_bayes in RR中naive_bayes的预测数据帧中的因素
【发布时间】:2023-03-21 07:23:02
【问题描述】:

我正在尝试了解如何使用 naive_bayes 创建因子数据框来预测结果。我见过的所有示例都采用单个数据框并将其拆分为两个 dfs(训练和测试)。这对我有用:

library(naivebayes)

#Basic naive-bayes model with prediction/test dataframe a subset of the original 

age_class<-c('x3','x2','x2','x1','x3','x1')
student<-c('n','y','n','y','y','y')
inc<-c('m','h','m','m','m','l')
sav<-c('e','f','e','e','f','f')
buy<-c('N','Y','Y','Y','Y','Y')

df<-data.frame(age_class,student,inc,sav,buy)

nbmod<-naive_bayes(buy~ age_class + student +inc + sav, data=df[2:6,])

predictdf<-df[1,1:4]

predict(nbmod,newdata=predictdf)

我是否必须通过每次指定所有级别来创建一个数据框来进行预测?有没有办法利用原始数据框 (df) 中有关因子水平的信息?

age_class<-factor('x3', levels=c('x1','x2','x3'))
student<-factor('n', levels=c('n','y'))
inc<-factor('m', levels=c('h','l','m'))
sav<-factor('e',levels=c('e','f'))

predictdf3<-data.frame(age_class,student,inc,sav)

predict(nbmod,newdata=predictdf3)

【问题讨论】:

    标签: r naivebayes factors


    【解决方案1】:

    对于这种特殊情况,您可能可以通过levels() 参考原始关卡:

    predictdf3 <- data.frame(
        age_class = factor("x3", levels = levels(df$age_class)),
        student = factor("n", levels = levels(df$student)),
        inc = factor("m", levels = levels(df$inc)),
        sav = factor("e", levels = levels(df$sav))
    )
    

    请注意,因子的编码应该在训练数据和测试数据中匹配。它绝对必须是一致的。因此,您必须合并(然后拆分)您的训练数据集和测试数据集,或者将因子水平从您的训练数据集复制到测试数据集。

    【讨论】:

    • @Petr-谢谢!这正是我想要的。
    • @rclivornese 太棒了!感谢您的反馈,我很高兴它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多