显然"错误"使用R中的k-NN在测试集中进行分类

时间:2014-10-29 12:27:49

标签: r classification knn

我正在学习R.我使用k-NN方法对我创建的人工数据集进行分类(两个属性和两个类)。在我的代码中,我打印了训练和测试集,但是在最后一个图中为测试集预测的类不是"在一致性"对于训练集中的示例(即,测试示例的类(使用1-NN),看到训练示例的分布显然是错误的。)

有人可以帮我识别代码中的错误吗?非常感谢你。

代码如下(如果需要,可以多次运行以查看测试集示例的错误分类,因为随机生成了训练示例):

library(ElemStatLearn)
require(class)

c0 <- cbind(runif(50,0,5), runif(50,0,100))
c1 <- cbind(runif(50,5,10), runif(50,0,100))
training <- rbind(c0,c1)

classt <- vector()
classt[1:50] <- 0
classt[51:100] <- 1

x_ <- seq(0, 10, 1)
y_ <- seq(0, 10, 1)
testset <- matrix(nrow = 0, ncol = 2)

for(i in x_){
  colaux <- cbind(rep(i,11), y_)
  testset <- rbind(testset, colaux)
}

testClass <- knn(train = training, test = testset, cl = classt, k = 1, prob = TRUE)

plot(training)
points(training, col=ifelse(classt==1, "coral", "cornflowerblue"))

plot(testset)
points(testset, col=ifelse(testClass==1, "coral", "cornflowerblue"))

1 个答案:

答案 0 :(得分:0)

分类不是&#34;错误&#34;。但是,这些图表令人困惑,因为它们使用了不同的y刻度。如果您在相同的比例上绘制它们,您将看到分类器正确地正常工作。