Classification Workflows
Class Balance
Count Rare Labels
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.
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 = "")
minimum ← 2
1minimum <- 22label_name <- c("cat", "dog", "cat", "bird", "dog")values this step2minimumlabel_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_namecounts ← 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_namerare ← bird
3counts <- table(label_name)4rare <- names(counts[counts < minimum])5rare_count <- length(rare)values this stepbirdrare2minimumrare_count ← 1
4rare <- names(counts[counts < minimum])5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")values this step1rare_countbirdrarelabel ← rare:1
5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")values this steprare:1label1rare_countcat(label, " ", sep = "")
6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")outputrare:1values this steprare:1label
minimum ← 1
1minimum <- 12label_name <- c("cat", "dog", "cat", "bird", "dog")values this step1minimumlabel_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_namecounts ← 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_namerare ← none
3counts <- table(label_name)4rare <- names(counts[counts < minimum])5rare_count <- length(rare)values this stepnonerare1minimumrare_count ← 0
4rare <- names(counts[counts < minimum])5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")values this step0rare_countnonerarelabel ← rare:0
5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")values this steprare:0label0rare_countcat(label, " ", sep = "")
6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")outputrare:0values this steprare:0label
minimum ← 3
1minimum <- 32label_name <- c("cat", "dog", "cat", "bird", "dog")values this step3minimumlabel_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_namecounts ← 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_namerare ← bird, cat, dog
3counts <- table(label_name)4rare <- names(counts[counts < minimum])5rare_count <- length(rare)values this stepbird, cat, dograre3minimumrare_count ← 3
4rare <- names(counts[counts < minimum])5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")values this step3rare_count3 classesrarelabel ← rare:3
5rare_count <- length(rare)6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")values this steprare:3label3rare_countcat(label, " ", sep = "")
6label <- paste("rare", rare_count, sep = ":")7cat(label, "\n", sep = "")outputrare:3values 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.