我正在编写代码来测试测试数据集上的一堆机器学习模型。我的目标类中的一些行有空字符串,所以我写了一些代码来摆脱这些行。
data <- read.csv("ML17-TP2-train.csv", header = TRUE)
filtered_data <- data[!(data$gender==" " | data$gender==""),]
train_data <- filtered_data[1:1200, c(3,4,6,7,8)]
test_data <- filtered_data[15001:17000, c(3,4,6,7,8)]
然后我使用MLR训练和测试机器学习模型
#create the task
nb.task <- makeClassifTask(id = "NaiveBayes", data = nb.data, target = "gender")
#create the learning
nb.learner <- makeLearner("classif.naiveBayes", predict.type = "prob", fix.factors.prediction = TRUE)
#train the learner
nb.trained <- train(nb.learner, nb.task)
#predict
nb.predict <- predict(nb.trained, newdata = test_data)
#get the auc
performance(nb.predict, measures = auc)
当我尝试检查AUC时,我得到了NA值
> performance(nb.predict, measures = auc)
auc
NA
当我尝试检查nb.predict的因子数
时test.gender <- as.factor(nb.data$gender)
我注意到它告诉我,我有3个因素,我期待的两个因素加上3,空字符串“”。我已经在Excel中检查了我的数据,我删除了环境中的所有变量,并从头开始重新运行我的代码。我甚至尝试删除除了2之外的所有记录,我仍然收到一条消息,告诉我我有3个因素。
我在做什么导致我的代码中引入了额外的因素?