Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- kde.model <- function(train.set)
- {
- N <- NULL
- n <- NULL
- sigma <- NULL
- h <- NULL
- train.set <- as.matrix(train.set)
- # N = número de amostras do conjunto de dados de treino
- get.N <- function(){
- if(is.null(N)){
- N <<- nrow(train.set)
- }
- N
- }
- # n = número de dimensões do conjunto de dados de treino
- get.n <- function(){
- if(is.null(n)){
- n <<- ncol(train.set)
- }
- n
- }
- # vector com o desvio padrão de uma das dimensões do
- # conjunto de dados de treino
- get.sigma <- function(){
- if(is.null(sigma)){
- sigma <<- apply(train.set, 2, sd)
- }
- sigma
- }
- # Fator de normalização do kde
- get.h <- function(){
- if(is.null(h)){
- h <<- 1.06 * get.sigma() * get.N()^(-0.2)
- }
- h
- }
- predict <- function(x){
- x <- as.numeric(x)
- N <- get.N()
- n <- get.n()
- h <- get.h()
- xRep <- matrix(rep(x, each = N), nrow = N)
- (1/N) * prod( (1/h) * colSums((1/sqrt(2*pi)) * exp(-(xRep - train.set)^2/(2*h^2))))
- }
- list(predict = predict,
- get.N = get.N,
- get.n = get.n,
- get.sigma = get.sigma,
- get.h = get.h)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement