【问题标题】:Why am i getting undefined columns with naiveBayes function?为什么我得到带有 naiveBayes 函数的未定义列?
【发布时间】:2019-09-29 08:22:38
【问题描述】:

我正在尝试在 R 中运行 naiveBayes 函数,并不断收到“未定义列已选择”的错误,并且无法弄清楚原因。

文件:http://www.mediafire.com/file/1dgqluc1f8gbngc/Train.Example.csv

FA.train <- read.csv("Train.Example.csv")

FA.train$Fatalities <- as.factor(FA.train$Fatalities)
fatalities_nb <- naiveBayes(Fatalities~., data = FA.train)
fatalities_nb

据我所知,我选择了所有列,但表示它们未定义。

【问题讨论】:

  • 你的错误是什么?我无法重现它 - 我运行了您的代码(将第一行存储到 FA.train)并且没有收到错误。
  • 我得到的错误是“[.data.frame(m, , attr(Terms, "term.labels"), drop = FALSE) 中的错误:选择了未定义的列"

标签: r error-handling naivebayes


【解决方案1】:

我相信您与数据集中现有的列名存在冲突。示例:其中一些不是“正确的”R 名称。当您清理到正确的 R 名称时,一切似乎都很好。我尝试了以下并且很好:

library(tidyverse)
library(e1071)
dat <- read_csv("data/Train.Example.csv") %>% 
    janitor::clean_names()

dat$Fatalities <- as.factor(dat$fatalities)
fatalities_nb <- naiveBayes(Fatalities~., data = dat)

得到:

> summary(fatalities_nb)
          Length Class  Mode     
apriori    2     table  numeric  
tables    18     -none- list     
levels     2     -none- character
isnumeric 18     -none- logical  
call       4     -none- call 

【讨论】:

  • 就是这样。太感谢了。使用 R 时我必须学会更好地命名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 2021-05-09
相关资源
最近更新 更多