Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.38 KB | None | 0 0
  1. kde.model <- function(train.set)
  2. {
  3.     N <- NULL
  4.     n <- NULL
  5.     sigma <- NULL
  6.     h <- NULL
  7.    
  8.     train.set <- as.matrix(train.set)
  9.    
  10.     # N = número de amostras do conjunto de dados de treino
  11.     get.N <- function(){
  12.         if(is.null(N)){
  13.             N <<- nrow(train.set)
  14.         }
  15.         N
  16.     }
  17.    
  18.     # n = número de dimensões do conjunto de dados de treino
  19.     get.n <- function(){
  20.         if(is.null(n)){
  21.             n <<- ncol(train.set)
  22.         }
  23.         n
  24.     }
  25.    
  26.     # vector com o desvio padrão de uma das dimensões do
  27.     # conjunto de dados de treino
  28.     get.sigma <- function(){
  29.         if(is.null(sigma)){
  30.             sigma <<- apply(train.set, 2, sd)
  31.         }
  32.         sigma
  33.     }
  34.    
  35.     # Fator de normalização do kde
  36.     get.h <- function(){
  37.         if(is.null(h)){
  38.             h <<- 1.06 * get.sigma() * get.N()^(-0.2)
  39.         }
  40.         h
  41.     }    
  42.      
  43.    
  44.     predict <- function(x){
  45.        
  46.         x <- as.numeric(x)
  47.        
  48.         N <- get.N()
  49.         n <- get.n()
  50.         h <- get.h()
  51.        
  52.         xRep <- matrix(rep(x, each = N), nrow = N)
  53.        
  54.         (1/N) * prod( (1/h) * colSums((1/sqrt(2*pi)) * exp(-(xRep - train.set)^2/(2*h^2))))
  55.     }
  56.    
  57.     list(predict = predict,
  58.          get.N = get.N,
  59.          get.n = get.n,
  60.          get.sigma = get.sigma,
  61.          get.h = get.h)
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement