data(iris) set.seed(2) iris.data <- iris[51:150,c(2,3,5)] iris.data$id <- c(rep(-1,50),rep(1,50)) iris.data <- iris.data[sample(1:100),] dimnames(iris.data)[[1]] <- 1:100 levels(iris.data$Species) <- c("X","S","G") ## plot plot(iris.data[,1],iris.data[,2],pch="") points(iris.data[iris.data$id==1,1],iris.data[iris.data$id==1,2],pch = "G", col = c(2)) points(iris.data[iris.data$id==-1,1],iris.data[iris.data$id==-1,2], pch = "S", col = c(4)) head(iris.data) ################################################### ### k-fold Cross-validation ################################################### k<-10 n<-nrow(iris.data) smpl<-sample(n) msk<-k*c(0:(ceiling(n/k)-1)) trial <- 1 idx<-smpl[trial+msk] training.set<-iris.data[-idx,] unseen.input<-iris.data[idx,1:2] target.output<-iris.data$id[idx] ## perceptron learn predicted.output<-0 ## write here the output predicted by the perceptron ################################################### ### Perceptron learning ################################################### g <- function(w,point) { x <- c(point,1) sign(w %*% x) ## write here the neurorn function } ##initialize w.0 w.0 <- c(runif(1),runif(1),runif(1)) w.t <- w.0 ## learn ## plot line learned after each epoch ################################################### ### plot ################################################### plot(training.set[,1],training.set[,2],pch="") points(training.set[training.set$id==1,1],training.set[training.set$id==1,2],pch = "S", col = c(2)) points(training.set[training.set$id==-1,1],training.set[training.set$id==-1,2], pch = "G", col = c(4)) abline(a=-w.t[3]/w.t[2], b=-w.t[1]/w.t[2], lty=1,lwd=2)