"Error in knn (...) no missing values are allowed",为什么?

"Error in knn (...) no missing values are allowed", why?

我有一个 class 变量中缺少值的测试集。 当 运行 knn 我收到错误消息:

"Error in knn (...) no missing values are allowed".

问题:为什么knn不允许测试集中class变量的值缺失?我的意思是,我不知道这些值,我想预测它们。 我可以只将一些 class 分配给 class 变量并仍然得到正确的结果吗?

示例代码:

library(class)
data <- data.frame("class_variable"=sample(LETTERS[1:2], 30, replace =     TRUE),
               "predictor_1" = runif(30),
               "predictor_2" = runif(30))
train <- data[1:20,]
test <- data[21:30,]

test$class_variable <- NA

knn(train, test, train$class_variable)

Error in knn(train, test, train$class_variable) : no missing values are allowed

根据 kNN 上的 R documentationknn 函数采用的第三个参数是 训练集 [=19] 的真实 class 值=].你是正确的,你不需要测试集的真实 class 值,因为那是你首先要预测的。但是您没有为测试 class 提供 NA 值;您正在为训练 class 化验提供 NA 值。 kNN 算法无法在 NA 响应值上 训练

traintest 必须具有相同的列数,并且数据中不能有 NA 值。所以这样做的方法是,在将它们传递给 knn 时,从 traintest 中排除 class_variable 列。这将起作用:

knn(train[, -1], test[, -1], train[, 1])