"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 documentation,knn
函数采用的第三个参数是 训练集 [=19] 的真实 class 值=].你是正确的,你不需要测试集的真实 class 值,因为那是你首先要预测的。但是您没有为测试 class 提供 NA
值;您正在为训练 class 化验提供 NA
值。 kNN 算法无法在 NA
响应值上 训练 。
train
和 test
必须具有相同的列数,并且数据中不能有 NA 值。所以这样做的方法是,在将它们传递给 knn
时,从 train
和 test
中排除 class_variable
列。这将起作用:
knn(train[, -1], test[, -1], train[, 1])
我有一个 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 documentation,knn
函数采用的第三个参数是 训练集 [=19] 的真实 class 值=].你是正确的,你不需要测试集的真实 class 值,因为那是你首先要预测的。但是您没有为测试 class 提供 NA
值;您正在为训练 class 化验提供 NA
值。 kNN 算法无法在 NA
响应值上 训练 。
train
和 test
必须具有相同的列数,并且数据中不能有 NA 值。所以这样做的方法是,在将它们传递给 knn
时,从 train
和 test
中排除 class_variable
列。这将起作用:
knn(train[, -1], test[, -1], train[, 1])