library(MASS) library(class) library(nnet) # number of hidden units S=5 Decay=0.001 TrainC<-read.table("trainC.dat") names(TrainC)<-c("x1","x2","y") p <- as.matrix(TrainC[, -3]) tp<-TrainC$y tpi = class.ind(tp) xp <- seq(min(TrainC$x1), max(TrainC$x1), length = 50); np <- length(xp) yp <- seq(min(TrainC$x2), max(TrainC$x2), length = 50) pt <- expand.grid(x1 = xp, x2 = yp) par(mfcol=c(2,1)) set.seed(1) Z.nn <- nnet(p, tpi, skip=T, softmax=T, size=S, decay=Decay, maxit=1000) Z.nn.t <- predict(Z.nn, pt ) zp.nn <- Z.nn.t[,1]-Z.nn.t[,2] plot(TrainC[, 1], TrainC[, 2], xlab = "x1", ylab = "x2", col=codes(TrainC$y)+1) title("NN TrainC") mtext(paste("Size=",S,", Decay=",Decay)) contour(xp, yp, matrix(zp.nn, np), add = T, levels = 0, labex = 0) TestC <- read.table("ExamC.dat") names(TestC)<-c("x1","x2","y") N <- length(TestC[,1]) xp <- seq(min(TestC$x1), max(TestC$x1), length = 50); np <- length(xp) yp <- seq(min(TestC$x2), max(TestC$x2), length = 50) pt <- expand.grid(x1 = xp, x2 = yp) yhat <- predict(Z.nn, TestC[,-3] ) yThat <- rep('d', length(yhat[,1])) for(i in 1:length(yhat[,1])) { if( yhat[i,1] > yhat[i,2] ) yThat[i]="a" else yThat[i]="b" } plot(TestC[, 1], TestC[, 2], xlab = "x1", ylab = "x2", col=codes(TestC$y)+1) title("NN ExamC") mtext(paste("Size=",S,", Decay=",Decay)) T.nn.t <- predict(Z.nn, pt ) zp.nn <- T.nn.t[,1]-T.nn.t[,2] contour(xp, yp, matrix(zp.nn, np), add = T, levels = 0, labex = 0)