KNN准确度为100%?

时间:2017-07-28 20:49:46

标签: performance-testing knn

我已将以下代码用于KNN

jd <- jobdata
   head (jd)
   jd$ipermanency rate= as.integer(as.factor(jd$ipermanency rate))
   jd$`permanency rate`=as.integer(as.factor(jd$`permanency rate`))
   jd$`job skills`=as.integer(as.factor(jd$`job skills`))
   jd$Default <- factor(jd$Default)
   num.vars <- sapply(jd, is.numeric)
   jd[num.vars] <- lapply(jd[num.vars], scale)
   jd$`permanency rate` <- factor(jd$`permanency rate`)
   num.vars <- sapply(jd, is.numeric)
   jd[num.vars] <- lapply(jd[num.vars], scale)
   myvars <- c("permanency rate", "job skills")
   jd.subset <- jd[myvars]
   summary(jd.subset)
   set.seed(123)
   test <- 1:100
   train.jd <- jd.subset[-test,]
   test.jd <- jd.subset[test,]
   train.def <- jd$`permanency rate`[-test]
   test.def <- jd$`permanency rate`[test]
   library(class)
   knn.1 <-  knn(train.jd, test.jd, train.def, k=1)
   knn.3 <-  knn(train.jd, test.jd, train.def, k=3)
   knn.5 <- knn(train.jd, test.jd, train.def, k=5)

但每当我计算k = 1,3&amp;的正确分类比例时5我总是100%正确。这是正常的还是我在某处出错了

谢谢

2 个答案:

答案 0 :(得分:0)

我们不能说knn分类器总是会产生错误的结果。实际上它是基于数据集的。在最好的情况下,列车数据可以等于测试数据,它总是产生100%的结果。

  

训练数据==测试数据 - 在所有情况下100%效率

答案 1 :(得分:0)

仅当模型为过拟合案例时。这意味着模型无法捕获随机性,因此可以对训练数据进行100%的预测