我使用naiveBayes e1071
来对我的数据集进行分类(分类类别:”V32″ 0/1)。
这是我所做的操作:
d <- read.table("Modeling_Data.txt",header=FALSE,sep="\t", comment.char="",quote="") #将数据分为训练集和测试集,比例为70:30 trainingIndex <- createDataPartition(d$V32, p=.7, list=F) d.training <- d[trainingIndex,] d.testing <- d[-trainingIndex,] nb.classifier <- naiveBayes(as.factor(d$V32) ~ ., data = d.training)
但我得到了以下错误:
Error in names(dimnames(tables[[i]])) <- c(Yname, colnames(x)[i]) : 尝试在NULL上设置属性 predict(nb.classifier,d.testing[,-50000]) Error in predict(nb.classifier, d.testing[, -50000]) : 对象'nb.classifier'未找到
我尝试使用内置的数据集(iris),一切正常。我的方法哪里出了问题?
回答:
看起来模型构建失败了(因此分类器未能构建)。在没有查看您的数据的情况下,我的最佳猜测是您的数据中有不完整的案例。
您可以尝试使用complete.cases
来删除缺失数据的案例,如下所示。
d <- read.table("Modeling_Data.txt",header=FALSE,sep="\t",comment.char="",quote="")# 删除不完整的案例d[complete.cases(d),]# 将数据分为训练集和测试集,比例为70:30trainingIndex <- createDataPartition(d$V32, p=.7, list=F)