样本和价值似乎在决策树中发生冲突

时间:2018-06-21 01:47:02

标签: python scikit-learn decision-tree

Decision tree

在上图中,最高级别的样本为6499,分为3356个True和3143 False。但是,如果您遵循True路径,则表示有2644个样本。为什么不会有3356?所有样本似乎都与上述水平的结果相矛盾。

我想我只是误解了样本和值的含义,但是如果是代码,下面是绘图部分的代码:

NaN

1 个答案:

答案 0 :(得分:2)

我认为您误解了library(dplyr) set.seed(123) df <- data.frame(ID = 1:100, category = sample(LETTERS[1:10], 100, replace = T)) sub_df <- df %>% group_by(category) %>% sample_n(3) %>% ungroup() %>% sample_n(6) library(purrr) # Create a table to store the sample number, default to 3 df_s <- data_frame(category = unique(df$category), Number = 3) # Minus the count number in sub_df df_s2 <- df_s %>% left_join(sub_df %>% count(category), by = "category") %>% mutate(n = ifelse(is.na(n), 0, n)) %>% mutate(Number = Number - n) %>% select(-n) %>% arrange(category) # Split the df by category df_list <- split(df, f = df$category) # Apply the sample function on df_list based on df_s2 result_df <- map2_dfr(df_list, df_s2$Number, ~sample_n(.x, .y)) # Check the count number of result_df result_df %>% count(category) # # A tibble: 10 x 2 # category n # <fct> <int> # 1 A 3 # 2 B 3 # 3 C 3 # 4 D 3 # 5 E 2 # 6 F 2 # 7 G 1 # 8 H 3 # 9 I 2 # 10 J 2 的含义。值似乎表示树的该节点上每个类的实例数量,其中value只是samples中所有实例的总和该节点

value字段不会告诉您有关如何根据条件的结果拆分这些样本的信息。您会注意到,每个节点上的value等于samples,同样,每个父节点的sum(value)值等于每个子节点samples的值之和节点(例如samples)。