Class balance checks show whether each label has enough examples to learn from.

Program

Play the script to change the minimum class size and count rare labels.

minimum
class_balance.R
Replay: real traced execution (multi-file project)
minimum <- 2
label_name <- c("cat", "dog", "cat", "bird", "dog")
counts <- table(label_name)
rare <- names(counts[counts < minimum])
rare_count <- length(rare)
label <- paste("rare", rare_count, sep = ":")
cat(label, "\n", sep = "")
minimum <- 1
label_name <- c("cat", "dog", "cat", "bird", "dog")
counts <- table(label_name)
rare <- names(counts[counts < minimum])
rare_count <- length(rare)
label <- paste("rare", rare_count, sep = ":")
cat(label, "\n", sep = "")
minimum <- 3
label_name <- c("cat", "dog", "cat", "bird", "dog")
counts <- table(label_name)
rare <- names(counts[counts < minimum])
rare_count <- length(rare)
label <- paste("rare", rare_count, sep = ":")
cat(label, "\n", sep = "")
  1. minimum ← 2

    1minimum <- 22label_name <- c("cat", "dog", "cat", "bird", "dog")
    values this step2minimum
  2. label_name ← cat, dog, cat, bird, dog

    1minimum <- 22label_name <- c("cat", "dog", "cat", "bird", "dog")3counts <- table(label_name)
    values this stepcat, dog, cat, bird, doglabel_name
  3. counts ← bird=1, cat=2, dog=2

    2label_name <- c("cat", "dog", "cat", "bird", "dog")3counts <- table(label_name)4rare <- names(counts[counts < minimum])
    values this stepbird=1, cat=2, dog=2counts5 labelslabel_name
  4. rare ← bird

    3counts <- table(label_name)4rare <- names(counts[counts < minimum])5rare_count <- length(rare)
    values this stepbirdrare2minimum
  5. rare_count ← 1

    4rare <- names(counts[counts < minimum])5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")
    values this step1rare_countbirdrare
  6. label ← rare:1

    5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")
    values this steprare:1label1rare_count
  7. cat(label, " ", sep = "")

    6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")
    outputrare:1
    values this steprare:1label
  1. minimum ← 1

    1minimum <- 12label_name <- c("cat", "dog", "cat", "bird", "dog")
    values this step1minimum
  2. label_name ← cat, dog, cat, bird, dog

    1minimum <- 12label_name <- c("cat", "dog", "cat", "bird", "dog")3counts <- table(label_name)
    values this stepcat, dog, cat, bird, doglabel_name
  3. counts ← bird=1, cat=2, dog=2

    2label_name <- c("cat", "dog", "cat", "bird", "dog")3counts <- table(label_name)4rare <- names(counts[counts < minimum])
    values this stepbird=1, cat=2, dog=2counts5 labelslabel_name
  4. rare ← none

    3counts <- table(label_name)4rare <- names(counts[counts < minimum])5rare_count <- length(rare)
    values this stepnonerare1minimum
  5. rare_count ← 0

    4rare <- names(counts[counts < minimum])5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")
    values this step0rare_countnonerare
  6. label ← rare:0

    5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")
    values this steprare:0label0rare_count
  7. cat(label, " ", sep = "")

    6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")
    outputrare:0
    values this steprare:0label
  1. minimum ← 3

    1minimum <- 32label_name <- c("cat", "dog", "cat", "bird", "dog")
    values this step3minimum
  2. label_name ← cat, dog, cat, bird, dog

    1minimum <- 32label_name <- c("cat", "dog", "cat", "bird", "dog")3counts <- table(label_name)
    values this stepcat, dog, cat, bird, doglabel_name
  3. counts ← bird=1, cat=2, dog=2

    2label_name <- c("cat", "dog", "cat", "bird", "dog")3counts <- table(label_name)4rare <- names(counts[counts < minimum])
    values this stepbird=1, cat=2, dog=2counts5 labelslabel_name
  4. rare ← bird, cat, dog

    3counts <- table(label_name)4rare <- names(counts[counts < minimum])5rare_count <- length(rare)
    values this stepbird, cat, dograre3minimum
  5. rare_count ← 3

    4rare <- names(counts[counts < minimum])5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")
    values this step3rare_count3 classesrare
  6. label ← rare:3

    5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")
    values this steprare:3label3rare_count
  7. cat(label, " ", sep = "")

    6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")
    outputrare:3
    values this steprare:3label
class count `table(label_name)` counts examples per class.
rare class `counts < minimum` marks classes below the selected minimum.
balance check A rare-class count warns when training data is thin.