# spam library("MASS") library("class") library("nnet") library("tree") attach(spam) set.seed(123) m <-length(spam$spam) ucz <- sample(1:m, size = round(m/3), replace = FALSE, prob = rep(1/m, m)) spam.ucz <- data.frame(spam[ucz,]) spam.test <- data.frame(spam[-ucz,]) ks<-c(3:10,15, 20, 25, seq(30,100,by=10)) nks<-length(ks) blad.ucz<-numeric(length=nks) blad.test<-numeric(length=nks) names(blad.ucz)<-names(blad.test)<-ks spam.tr<-tree(spam~.,spam.ucz, mindev = 0, minsize = 2) for (i in seq(along=ks)) { spam.pr<-prune.tree(spam.tr,best=ks[i]) Z.ucz<-predict.tree(spam.pr,spam.ucz,type ="class") Z.test<-predict.tree(spam.pr,spam.test,type ="class") blad.ucz[i]<-1-sum(Z.ucz==spam.ucz$spam)/nrow(spam.ucz) blad.test[i]<-1-sum(Z.test==spam.test$spam)/nrow(spam.test) } plot(ks,blad.ucz,xlab="Wielkość drzewa",ylab="Błąd klasyfikacji",ylim=c(0,0.2),type="n") lines(ks,blad.test,type="b",col='blue',pch=1) lines(ks,blad.ucz,type="b",col='red',pch=3) legend("topright",lty=1,pch=c(3,1), col=c("red","blue"),legend = c("Zbiór uczący ", "Zbiór testowy "))