Logo
Section 1 / 6

基尼不纯度

学习CART分类树所使用的数学方法,用于定义纯度与不纯度。

导入

基尼不纯度

学习CART分类树所使用的数学方法,用于定义纯度与不纯度。

...
成人普查收入纯度 / 不纯度谱

Gini(t) = 1 - \sum_{i=1}^c [p(i|t)]^2

Gini(t) = 1 - \sum_{i=1}^c [p(i|t)]^2

...
标签比例
1#================================================================================================ 2# 加载库 - 抑制消息输出 3# 4suppressMessages(library(tidyverse)) 5 6 7# 创建与上方图像对应的标签集合 8bucket_1 <- data.frame(income = c("<=50K", "<=50K", "<=50K", "<=50K")) 9bucket_2 <- data.frame(income = c(">50K", ">50K", "<=50K", "<=50K")) 10bucket_3 <- data.frame(income = c(">50K", ">50K", ">50K", ">50K")) 11 12 13# 计算标签的比例 14bucket_1_prop <- bucket_1 %>% 15 group_by(income) %>% 16 summarize(proportion = n() / nrow(bucket_1)) 17bucket_1_prop 18 19bucket_2_prop <- bucket_2 %>% 20 group_by(income) %>% 21 summarize(proportion = n() / nrow(bucket_2)) 22bucket_2_prop 23 24bucket_3_prop <- bucket_3 %>% 25 group_by(income) %>% 26 summarize(proportion = n() / nrow(bucket_3)) 27bucket_3_prop
...
对比例进行平方并从1中减去
...
标签组的最终基尼不纯度得分
1#================================================================================================ 2# 加载库 - 抑制消息输出 3# 4suppressMessages(library(tidyverse)) 5 6 7# 创建与上方图像对应的标签集合 8bucket_1 <- data.frame(income = c("<=50K", "<=50K", "<=50K", "<=50K")) 9bucket_2 <- data.frame(income = c(">50K", ">50K", "<=50K", "<=50K")) 10bucket_3 <- data.frame(income = c(">50K", ">50K", ">50K", ">50K")) 11 12 13# 计算标签的比例 14bucket_1_prop <- bucket_1 %>% 15 group_by(income) %>% 16 summarize(proportion = n() / nrow(bucket_1)) 17 18bucket_2_prop <- bucket_2 %>% 19 group_by(income) %>% 20 summarize(proportion = n() / nrow(bucket_2)) 21 22bucket_3_prop <- bucket_3 %>% 23 group_by(income) %>% 24 summarize(proportion = n() / nrow(bucket_3)) 25 26 27# 完成基尼不纯度计算 28bucket_1_gini <- 1 - (bucket_1_prop$proportion[1] ^ 2) 29bucket_1_gini 30 31bucket_2_gini <- 1 - (bucket_2_prop$proportion[1] ^ 2) - (bucket_2_prop$proportion[2] ^ 2) 32bucket_2_gini 33 34bucket_3_gini <- 1 - (bucket_3_prop$proportion[1] ^ 2) 35bucket_3_gini

监督学习

基尼不纯度变化