tests/testthat/test-em_link.R

test_that("Naive Bayes Model Achieves > 95 perecent accuracy on toy dataset", {
  inv_logit <- function(x) {
    exp(x) / (1 + exp(x))
  }

  for (i in 1:10) {
    n <- 10^5
    d <- 1:n %% 5 == 0
    X <- cbind(
      as.integer(ifelse(d, runif(n) < .8, runif(n) < .2)),
      as.integer(ifelse(d, runif(n) < .9, runif(n) < .2)),
      as.integer(ifelse(d, runif(n) < .7, runif(n) < .2)),
      as.integer(ifelse(d, runif(n) < .6, runif(n) < .2)),
      as.integer(ifelse(d, runif(n) < .5, runif(n) < .2)),
      as.integer(ifelse(d, runif(n) < .1, runif(n) < .9)),
      as.integer(ifelse(d, runif(n) < .1, runif(n) < .9)),
      as.integer(ifelse(d, runif(n) < .8, runif(n) < .01))
    )

    x_sum <- rowSums(X)
    g <- inv_logit((x_sum - mean(x_sum)) / sd(x_sum))
    out <- em_link(X, g, tol = .0001, max_iter = 100)

    confusion_vector <- c(prop.table(table(out > .5, d)))
    # Expect classifier gets better than  97 percent accurately reliably on toy example
    expect_true((confusion_vector[1] + confusion_vector[4]) > .97)
  }
})

Try the zoomerjoin package in your browser

Any scripts or data that you put into this service are public.

zoomerjoin documentation built on April 13, 2025, 9:08 a.m.