Nothing
lending_club <- head(lending_club, 200)
lending_club_fail <-
lending_club %>%
dplyr::mutate(bad = Inf, miss = NA)
num_pred <- c("funded_amnt", "annual_inc", "num_il_tl")
lc_basic <-
boost_tree(mode = "classification") %>%
set_engine("C5.0", bands = 2)
# ------------------------------------------------------------------------------
test_that('C5.0 execution', {
skip_if_not_installed("C50")
expect_no_condition(
res <- fit(
lc_basic,
Class ~ log(funded_amnt) + int_rate,
data = lending_club,
control = ctrl
)
)
expect_no_condition(
res <- fit_xy(
lc_basic,
x = lending_club[, num_pred],
y = lending_club$Class,
control = ctrl
)
)
expect_true(has_multi_predict(res))
expect_equal(multi_predict_args(res), "trees")
# outcome is not a factor:
expect_snapshot(
error = TRUE,
res <- fit(
lc_basic,
funded_amnt ~ term,
data = lending_club,
engine = "C5.0",
control = ctrl
)
)
# Model fails
C5.0_form_catch <- fit(
lc_basic,
Class ~ miss,
data = lending_club_fail,
control = caught_ctrl
)
expect_true(inherits(extract_fit_engine(C5.0_form_catch), "try-error"))
# Model fails
C5.0_xy_catch <- fit_xy(
lc_basic,
control = caught_ctrl,
x = lending_club_fail[, "miss"],
y = lending_club_fail$Class
)
expect_true(inherits(extract_fit_engine(C5.0_xy_catch), "try-error"))
})
test_that('C5.0 prediction', {
skip_if_not_installed("C50")
classes_xy <- fit_xy(
lc_basic,
x = lending_club[, num_pred],
y = lending_club$Class,
control = ctrl
)
xy_pred <- predict(extract_fit_engine(classes_xy), newdata = lending_club[1:7, num_pred])
expect_equal(xy_pred, predict(classes_xy, lending_club[1:7, num_pred])$.pred_class)
})
test_that('C5.0 probabilities', {
skip_if_not_installed("C50")
classes_xy <- fit_xy(
lc_basic,
x = lending_club[, num_pred],
y = lending_club$Class,
control = ctrl
)
xy_pred <- predict(extract_fit_engine(classes_xy), newdata = as.data.frame(lending_club[1:7, num_pred]), type = "prob")
xy_pred <- as_tibble(xy_pred)
names(xy_pred) <- c(".pred_bad", ".pred_good")
expect_equal(xy_pred, predict(classes_xy, lending_club[1:7, num_pred], type = "prob"))
one_row <- predict(classes_xy, lending_club[1, num_pred], type = "prob")
expect_equal(xy_pred[1,], one_row)
})
test_that('submodel prediction', {
skip_if_not_installed("C50")
library(C50)
vars <- c("female", "tenure", "total_charges", "phone_service", "monthly_charges")
class_fit <-
boost_tree(trees = 20, mode = "classification") %>%
set_engine("C5.0", control = C5.0Control(earlyStopping = FALSE)) %>%
fit(churn ~ ., data = wa_churn[-(1:4), c("churn", vars)])
pred_class <- predict(extract_fit_engine(class_fit), wa_churn[1:4, vars], trials = 4, type = "prob")
mp_res <- multi_predict(class_fit, new_data = wa_churn[1:4, vars], trees = 4, type = "prob")
mp_res <- do.call("rbind", mp_res$.pred)
expect_equal(mp_res[[".pred_No"]], pred_class[, "No"], ignore_attr = TRUE)
expect_snapshot(error = TRUE,
multi_predict(class_fit, newdata = wa_churn[1:4, vars], trees = 4, type = "prob")
)
})
## -----------------------------------------------------------------------------
test_that('argument checks for data dimensions', {
skip_if_not_installed("C50")
data(penguins, package = "modeldata")
penguins <- na.omit(penguins)
spec <-
boost_tree(min_n = 1000, trees = 5) %>%
set_engine("C5.0") %>%
set_mode("classification")
expect_snapshot(
f_fit <- spec %>% fit(species ~ ., data = penguins)
)
expect_snapshot(
xy_fit <- spec %>% fit_xy(x = penguins[, -1], y = penguins$species)
)
expect_equal(extract_fit_engine(f_fit)$control$minCases, nrow(penguins))
expect_equal(extract_fit_engine(xy_fit)$control$minCases, nrow(penguins))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.