R/kNN_zeroone.R

#' Calculate the best guess via knn, also gives confidence
#'
#' @param x is an object
#' @return y is the output
#' @export

kNN_zeroone <- function(distances, k, y.train, n.test){

  labels_kN <- matrix(NA, ncol = 2, nrow = n.test)
  labels_kN <- as.data.frame(labels_kN)
  colnames(labels_kN) <- c("BestGuess", "Confidence")

  for(j in 1:n.test){
    nearest <- order(distances[j, ], decreasing = TRUE)[1:k]
    guesses <- y.train[nearest]

    table_guesses <- table(guesses)
    best_guess <- names(table_guesses[table_guesses == max(table_guesses)])
    labels_kN$BestGuess[j] <- sample(best_guess, 1)
    labels_kN$Confidence[j] <- table_guesses[table_guesses == max(table_guesses)][1]/k
  }

  return(labels_kN)

}
thomaswiemann/SMLpractical documentation built on May 28, 2019, 12:23 p.m.