在R中使用k-NN在测试集中显然是“错误”的分类

在R中使用k-NN在测试集中显然是“错误”的分类,r,classification,knn,R,Classification,Knn,我正在学习R。我正在使用k-NN方法对一个人工数据集进行分类,我创建了两个属性和两个类。在我的代码中,我打印了训练集和测试集,但是在最后一个图中为测试集预测的类与训练集中的示例不一致,也就是说,使用1-NN的测试示例的类在看到训练示例的分布时显然是错误的 有人能帮我找出代码中的错误吗?多谢各位 由于随机生成训练示例,如果需要查看测试集示例的错误分类,请多次运行以下代码: library(ElemStatLearn) require(class) c0 <- cbind(runif(50,

我正在学习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"))

分类没有错。然而,这些图表令人困惑,因为它们使用不同的y刻度。如果以相同的比例绘制它们,您将看到分类器工作正常。

我运行了几次代码,没有发现输出有任何错误。你注意到两个图中的y刻度不同了吗?如果你仍然确信某些东西是错的,也许你可以包括这些图表,并解释你到底认为什么是错的?你是对的,问题在于图表的y比例。很抱歉这个愚蠢的问题,非常感谢!我已经把它作为一个答案发布了。如果愿意,可以随意接受。您可以使用set.seed函数使代码可重复生成