簡體   English   中英

R 中 naive_bayes 的預測因素 dataframe

[英]factors in prediction dataframe for naive_bayes in R

我試圖了解如何創建一個 dataframe 因素來預測使用 naive_bayes 的結果。 我見過的所有示例都采用單個 dataframe 並將其拆分為兩個 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)

我是否必須通過每次指定所有級別來創建 dataframe 來預測? 有沒有辦法利用有關原始 dataframe (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)

對於這種特殊情況,您可能可以通過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))
)

請注意,因子的編碼應該在訓練和測試數據中匹配。 它絕對必須是一致的。 因此,您必須合並(然后拆分)您的訓練數據集和測試數據集,或者將因子級別從您的訓練數據集復制到測試數據集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM