这是我的朴素贝叶斯部分代码
trainPred<- predict(NBclassfier, newdata = train, type = "raw")
但是我得到的trainPred长度的数字错误,它比trainPre的实际大小大两倍。
即使在使用时
trainPred<- predict(NBclassfier, newdata = train, type = "class")
我的trainPred长度仅得到0
所以当我运行下面的代码时会出现错误
trainTable <- table(train$prog, trainPred)
NBclassifer的代码为NBclassfier = naiveBayes(prog~., data= train)
整个代码一个错误
library(caret)
library(e1071)
set.seed(25)
trainIndex=createDataPartition(NaiveData$prog, p=0.8)$Resample1
train=NaiveData[trainIndex, ]
test=NaiveData[-trainIndex, ]
检查余额
print(table(NaiveData$prog))
0 1
496 261
检查火车表
print(table(train$prog))
0 1
388 218
NBclassfier = naiveBayes(prog~., data= train)
trainPred <- predict(NBclassfier, newdata = train, type = "raw")
trainPred<- trainPred
trainTable <- table(train$prog, trainPred)
Error in table(train$prog, trainPred) : all arguments must have the same length
您会获得属于每个班级的概率。在您的情况下,您有2种类型的标签,因此长度是其2倍。您可以找到每行的最大值以获取标签,请参见下文:
我刚解决了这个问题,也想分享答案,