使用KNN对Pendigit数据集进行交叉验证

时间:2019-09-24 15:53:08

标签: r machine-learning classification knn

我正在使用KNN模型对数字位数数据集进行分类,这是指示绘制数字的坐标数据集。我非常有信心我已经正确构建了模型,但是我坚持对其进行交叉验证。

查找了很多示例,但发现它们与我的示例相似,或者对整数而不是整数进行了分类。

    set.seed(2)

    labels = pendigits.train$Number_Drawn
    initial_model <- knn(
      train=pendigits.train, test=pendigits.test, cl=labels, k=10
    )
    table(pendigits.test$Number_Drawn, initial_model)

    knnFit_model <- train(
     pendigits.train, labels,
     method = "knn",
     preProcess = c("center", "scale"),
     tuneLength = 10,
     trControl = trainControl(method = "cv")
    )

    cross_validation_prediction <- predict(
      knnFit_model, 
      newdata = pendigits.test
    )
    table(cross_validation_prediction)

0 1 1.2 1.4 1.5 1.6 1.8 2 2.2 2.4 2.6 3 3.4 3.8 4 4.2 4.6 4.8 5    5.2 5.4 5.8 6 6.4 7 7.2 7.4 7.8 8 9    354 329 17 14 1 3 8 360 1 3 1 335 2 1 353 2 7 2    331 1 1 2 336 2 351 8 6 3 332 332

我希望表格(cross_validation_prediction)能给我一些东西 类似于带有表(pendigits.test $ Number_Drawn,initial_model)的输出

          0   1   2   3   4   5   6   7   8   9
      0 351   0   0   0   0   0   9   0   2   1
      1   0 344  19   0   1   0   0   0   0   0
      2   0   1 363   0   0   0   0   0   0   0
      3   0   1   0 334   0   0   0   0   0   1
      4   0   0   0   0 353  10   1   0   0   0
      5   0   0   0   7   0 327   0   0   0   1
      6   0   0   0   0   0   0 336   0   0   0
      7   0  14   1   0   0   0   0 349   0   0
      8   1   0   0   0   0   1   0   0 334   0
      9   0   2   0   8   0   0   0   4   1 321

但获得输出

0   1 1.2 1.4 1.5 1.6 1.8   2 2.2 2.4 2.6   3 3.4 3.8   4 4.2 4.6 4.8   
5 5.2 5.4 5.8   6 6.4   7 7.2 7.4 7.8   8   9 
354 329  17  14   1   3   8 360   1   3   1 335   2   1 353   2   7   2 
331   1   1   2 336   2 351   8   6   3 332 332 

我真的不明白为什么我得到不同的结果。

0 个答案:

没有答案