我正在学习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"))
答案 0 :(得分:0)
分类不是&#34;错误&#34;。但是,这些图表令人困惑,因为它们使用了不同的y
刻度。如果您在相同的比例上绘制它们,您将看到分类器正确地正常工作。