context("aode")
test_that("spode", {
u <- spode(sp='D', features=LETTERS[5:9], class = 'C')
expect_equal(graph_num_arcs(dag(u)), 11)
expect_equal(length(graph_get_adjacent('D', dag(u))), 6)
u <- spode(sp='E', features=LETTERS[c(4, 6:9)], class = 'C')
expect_equal(graph_num_arcs(dag(u)), 11)
expect_equal(length(graph_get_adjacent('E', dag(u))), 6)
})
test_that("aode str", {
# with 1 feature is an nb
u <- aode(class = 'a', alphadb[, 1:2, drop = FALSE])
expect_true(is_nb(u))
u <- aode(class = 'a', random_letters_db(10))
expect_true(is_aode(u))
expect_true(is_ode(models(u)[['c']]))
expect_equal(length(models(u)), 9)
expect_identical(class_var(u), 'a')
expect_identical(features(u), letters[2:10])
d <- models(u)[[1]]
expect_equal(graph_num_arcs(dag(d)), 9 + 8)
expect_equal(length(graph_get_adjacent('b', dag(d))), 9)
d <- models(u)[[9]]
expect_equal(graph_num_arcs(dag(d)), 9 + 8)
expect_equal(length(graph_get_adjacent('j', dag(d))), 9)
})
test_that("aode bnc funs", {
lets <- random_letters_db(10)
u <- aode(class = 'a', lets)
expect_equal(class_var(u), 'a')
feats <- setdiff(colnames(lets), 'a')
expect_equal(features(u), feats)
expect_false(is_ode(u))
expect_false(is_semi_naive(u))
expect_false(is_nb(u))
expect_error(narcs(u))
expect_error(nparams(u))
expect_error(params(u))
expect_equal(length(models(u)), 9)
expect_output(print(u), regexp = 'ensemble of 9')
expect_output(print(u), regexp = 'learning algorithm: aode')
})
test_that("fit aode and bnc", {
a <- bnc('aode', 'class', car, smooth = 1)
sapply(a$models, BIC, car) # No error
})
test_that("log joint", {
a <- aode('class', car)
a <- lp(a, car, smooth = 1)
lj <- compute_log_joint(a, car)
expect_equal(sum(exp(lj)), 1)
})
test_that("predict", {
# currently not considering weights
# a <- aode('class', car, m=10000)
# a <- lp(a, car, smooth = 1)
# a <- bnc('aode', 'class', car, dag_args = list(m=10000), smooth = 1)
# p <- predict(a, car, prob = TRUE)
# cp <- params(a$models[[1]])$class
# expect_equal(sum(abs(apply(p, 1, '-', cp))), 0)
a <- bnc('aode', 'class', car, smooth=1)
p <- predict(a, car, prob = TRUE)
expect_equal(p[12, 1], c(unacc=0.793), tolerance = 0.001) # Probability from Weka
# dbreast <- foreign::read.arff('~/code/teach-asdm-c01/data/dbreast-cancer.arff')
# a <- bnc('aode', 'Class', dbreast, smooth=1)
# p <- predict(a, dbreast, prob = TRUE)
# expect_equal(p[1, 1], c("no-recurrence-events"=0.494), tolerance = 0.01) # Weka has 0.494
})
test_that("incomplete data", {
# gRain implementation change
# # no error
# skip_if_not_installed("gRain")
# vt <- voting[1:10, ]
# a <- aode('Class', vt)
# a <- lp(a, vt, smooth = 1)
# p <- predict(a, vt, prob = TRUE)
# gRain implementation change
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.