“knn(...)中的错误允许没有遗漏值”,为什么?

时间:2016-07-28 18:09:13

标签: r knn

我在类变量中有一个缺少值的测试集。 运行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):     不允许缺失值

2 个答案:

答案 0 :(得分:0)

根据kNN上的R documentationknn函数所采用的第三个参数是训练集的真正类值。你是正确的,你不需要测试集的真正的类值,因为这是你首先想要预测的。但是,您没有为测试分类提供NA值;您正在为培训分类提供NA值。 kNN算法不能训练 NA响应值。

答案 1 :(得分:0)

traintest必须具有相同数量的列,并且数据中不能包含NA值。因此,执行此操作的方法是,在将class_variable传递给train时排除testknn的{​​{1}}列。这将有效:

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