model.frame.default(formula=mldata.knn$Gender~,data=mldata\u train,:变量长度不同(适用于';年龄';) set.seed(400) random

model.frame.default(formula=mldata.knn$Gender~,data=mldata\u train,:变量长度不同(适用于';年龄';) set.seed(400) random,r,R,为数据创建朴素贝叶斯分类器时,数据的长度不同。无论mldata.knn的长度是多少,基于从createDataPartition中70/30的分割,您的训练数据集mldata\u train将包含70%的数据 因此,在声明中: set.seed(400) random <- createDataPartition(mldata.knn$Transport, p=0.70,list = F) mldata_train <- mldata.knn[random,] mldata_test

为数据创建朴素贝叶斯分类器时,数据的长度不同。无论
mldata.knn
的长度是多少,基于从
createDataPartition
中70/30的分割,您的训练数据集
mldata\u train
将包含70%的数据

因此,在声明中:

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)
您有
mldata.knn$Gender
,其中包含原始数据集的长度(
mldata.knn
),以及从点(.)中包含的任何变量在公式中-但这些变量取自
mldata\u train
,因为语句包括
data=mldata\u train
。这些其他变量的长度不同(仅为原始数据的70%)

也许您打算仅使用训练数据来制作NB分类器:

NB_model = naiveBayes(mldata.knn$Gender ~., data = mldata_train)
NB_model = naiveBayes(Gender ~., data = mldata_train)