set.seed(400)
random <- createDataPartition(mldata.knn$Transport, p=0.70,list = F)
mldata_train <- mldata.knn[random,]
mldata_test <- mldata.knn[-random,]
print(table(mldata.knn$Transport))
print(table(mldata_train$Transport))
library(e1071)
NB_model = naiveBayes(mldata.knn$Gender ~., data = mldata_train)
print(NB_model)
model.frame.default中的错误(公式= mldata.knn $ Gender〜。,data = mldata_train,:可变长度不同(为'Age'找到)
答案 0 :(得分:0)
在对数据进行朴素贝叶斯分类时,数据的长度是不同的。无论您的mldata.knn
的长度是多少,您的训练数据集mldata_train
都将包含70%的数据,这是基于您从createDataPartition
进行的70/30拆分中得出的。
因此,在声明中:
NB_model = naiveBayes(mldata.knn$Gender ~., data = mldata_train)
您有mldata.knn$Gender
,其长度为原始数据集(mldata.knn
),还有公式中点(。)中的任何变量-但这些变量取自{ {1}},因为该语句包括mldata_train
。这些其他变量的长度将不同(仅占原始数据的70%)。
也许您只是打算使用训练数据来做您的NB分类器:
data = mldata_train