|
|
- library(geometry)
-
- perceptron.load.data <- function(filename) {
- lines <- sapply(readLines(filename), function(x) strsplit(x, " "))
-
- data.points <- list()
- data.labels <- c()
-
- for(i in 1:(length(lines))) {
- data.points[[i]] <- as.double(lines[[i]][1:3])
- data.labels[i] <- as.integer(lines[[i]][4])
- }
-
- data <- list(data.points, data.labels)
- names(data) <- c("point", "label")
-
- return(data)
- }
-
- perceptron.learn <- function(data.points, data.labels, weight) {
-
- repeat {
- L <- 0
-
- for(i in 1:length(data.labels)) {
- delta <- data.labels[i] - sign(dot(data.points[[i]], weight))
-
- if(delta != 0) {
- L <- L + 1
- weight <- weight + delta * data.points[[i]]
- }
- }
-
- if(L == 0) {
- break
- }
- }
-
- return(function(x) sign(dot(x, weight)))
- }
|