ESL2章

figure 2.4について

library(MASS)
blue_ave<-c(1,0)
red_ave<-c(0,1)
blue<-mvrnorm(100,blue_ave,diag(2))
red<-mvrnorm(100,red_ave,diag(2))
cl<-factor(c(rep("blue",100),rep("red",100)))
train<-rbind(blue,red)
test<-rbind(mvrnorm(5000,blue_ave,diag(2)/5),mvrnorm(5000,red_ave,diag(2))/5)

test_answer<-c(rep("blue",5000),rep("red",5000))
test_error<-c()
for (i in 1:200){
classres <- knn(train,test,cl,k=i,prob=T)
test_error<-c(test_error,length(which(classres==test_answer)))
}
plot(1-test_error/10000)

train_answer<-c(rep("blue",100),rep("red",100))
train_error<-c()
for (i in 1:200){
classres <- knn(train,train,cl,k=i,prob=T)
train_error<-c(train_error,length(which(classres==train_answer)))
}
plot(1-train_error/200)

plot(1-test_error/10000,type="l",ylim=c(0,0.5),xlab="",ylab="")
par(new=T)
plot(1-train_error/200,col="red",type="l",ylim=c(0,0.5),xlab="赤=training 黒=test",ylab="間違えた割合")

plot(blue,col="blue",xlim=c(-3,3),ylim=c(-3,3),xlab="",ylab="")
par(new=T)
plot(red,col="red",xlim=c(-3,3),ylim=c(-3,3),xlab="",ylab="")