我是使用R进行数据挖掘和机器学习的新手。当我研究朴素贝叶斯分类时,我遇到此错误:
“其中((sapply(newdata [ind_factor],nlevels)!= sapply(tables [ind_factor], (列表)对象不能强制输入“整数””
这是我的代码:
data <- read.csv(file.choose(),header = T)
str(data)
set.seed(1234)
splitData <- sample(2,nrow(data),replace = T,prob = c(0.8,0.2))
train<-data[splitData == 1,]
test <- data[splitData == 2,]
mdl <- naive_bayes(admit ~ .,data = train)
predicted <- predict(mdl, train, type = 'prob')
当我运行最后一行时,它会在上面抛出错误消息。谁能帮我! 非常感谢。
答案 0 :(得分:2)
您的自变量之一似乎是字符串或因子变量,并且都需要为数字。请在下面查看我的玩具数据集。当包含所有变量时,我会得到相同的错误;但是,当我取出var4(其中变量是字符串)时,它可以工作。
如果要使用该变量,可以将字符串变量转换为一个因子,然后将其转换为一个数字变量(它将捕获该因子的基础值)。
// check that values array is ready from api get request
if(values) {
values.filter((val) => {
// check if val has a first name - if error there is your reason
if(val.FirstName) {
return val.FirstName.includes('X');
}
});
}