1
에서 배우고 있습니다. k-NN 방법을 사용하여 작성한 인공 데이터 집합을 분류합니다 (두 개의 특성과 두 개의 클래스). 내 코드에서는 교육 및 테스트 세트를 인쇄하지만 마지막 플롯에서 테스트 세트에 대해 예측 된 클래스는 교육 세트의 예제와 일치하지 않습니다 (즉, 테스트 예제의 클래스 1-NN)은 분명히 훈련 예제의 분포를 보면 틀린 것입니다.분명히 "잘못된"분류는 k-NN을 사용하여 R
누군가 코드에서 오류를 식별하는 데 도움을 줄 수 있습니까? 고맙습니다.
코드는 다음 (테스트 세트 예제의 잘못된 분류를 볼 필요에 의한 교육 사례의 임의 세대, 여러 번 실행) :
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'스케일이 다른 것을 알았습니까? 그래도 뭔가 잘못되었다고 확신하는 경우 그래프를 포함시키고 정확히 무엇이 잘못되었다고 생각하는지 설명 할 수 있습니다. – NPE
맞습니다. 문제는 플롯의 y 축척입니다. 어리석은 문제에 대해 사과하고 대단히 감사합니다! – dreamscollector
답변으로 게시했습니다. 원하는 경우 언제든지 수락하십시오. – NPE