# przykład 2.23 library("MASS") library("class") library("nnet") options(OutDec=",") str(spam) set.seed(123) spam1<-spam[1:55] klasa<-spam$spam m <-length(klasa) ucz <- sample(1:m, size = round(2*m/3), replace = FALSE, prob = rep(1/m, m)) spam1.ucz <- spam1[ucz,] klasa.ucz<-klasa[ucz] klasai.ucz<-class.ind(klasa[ucz]) spam1.test <- spam1[-ucz,] klasa.test<-klasa[-ucz] klasai.test<-class.ind(klasa[-ucz]) # liczba neuronów w warstwie ukrytej ks<-numeric(length=1) ks<-seq(from=2, to=15, by=1) nks<-length(ks) blad.ucz<-numeric(length=nks) blad.test<-numeric(length=nks) names(blad.ucz)<-names(blad.test)<-ks for (i in seq(along=ks)) { cat("Iteracja = ", i,"\n") spam.nn<-nnet(spam1.ucz,klasai.ucz,skip=F,softmax=T,size=ks[i],decay=0.001,col=2,maxit=100) Z.ucz<-predict(spam.nn,spam1.ucz,type ="class") Z.test<-predict(spam.nn,spam1.test,type ="class") blad.ucz[i]<-1-sum(Z.ucz==klasa.ucz)/(length(klasa.ucz)) blad.test[i]<-1-sum(Z.test==klasa.test)/length(klasa.test) } # rys. 2.23 plot(ks,blad.ucz,xlab="Liczba neuronów w warstwie ukrytej",ylab="Błąd klasyfikacji",ylim=c(0,0.10),type="n") lines(ks,blad.test,type="b",col='blue',pch=2) lines(ks,blad.ucz,type="b",col='red',pch=3) legend("topright",pch=c(2,3),col=c('blue','red'),legend = c("zbiór testowy ", "zbiór uczący "))