我在类变量中有一个缺少值的测试集。 运行knn时,我收到错误消息:
“知道错误(...)”不允许缺失值。“
问题:为什么knn不允许缺少测试集中类变量的值?我的意思是,我不知道那些价值观,我想预测它们。 我可以将一些类分配给类变量并仍然得到正确的结果吗?
示例代码:
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)
knn中的错误(train,test,train $ class_variable): 不允许缺失值
答案 0 :(得分:0)
根据kNN上的R documentation,knn
函数所采用的第三个参数是训练集的真正类值。你是正确的,你不需要测试集的真正的类值,因为这是你首先想要预测的。但是,您没有为测试分类提供NA
值;您正在为培训分类提供NA
值。 kNN算法不能训练 NA
响应值。
答案 1 :(得分:0)
train
和test
必须具有相同数量的列,并且数据中不能包含NA值。因此,执行此操作的方法是,在将class_variable
传递给train
时排除test
和knn
的{{1}}列。这将有效:
knn(train[, -1], test[, -1], train[, 1])