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)
