【问题标题】:Splitting up a data frame for decision tree learning using stratified sampling使用分层抽样为决策树学习拆分数据框
【发布时间】:2020-07-01 14:45:30
【问题描述】:

我想使用分层抽样创建训练和测试样本集。我试着环顾四周,但我发现的所有包都返回一个数据框而不是一个表达式。我用来构建树的树包需要将子集作为表达式给出。

示例代码:

library(tree)
library(ISLR)
library(dplyr)

Carseats <- Carseats %>% mutate(High = factor(ifelse(Sales <= 8, "No", "Yes")))

set.seed(2)
train_sample <- sample(nrow(Carseats), nrow(Carseats) * 0.7)
carseats_test <- Carseats[-train_sample,]

tree.carseats <- tree(High~ . -Sales, Carseats, subset = train_sample)

是否可以修改上述代码,以便使用分层进行抽样?

【问题讨论】:

    标签: r dplyr decision-tree


    【解决方案1】:

    你可以这样做:

    library(tree)
    library(ISLR)
    library(dplyr)
    
    Carseats <- Carseats %>% mutate(High = factor(ifelse(Sales <= 8, "No", "Yes")))
    
    mean(Carseats$High == "Yes")
    [1] 0.41
    
    train_sample <- Carseats %>%
    tibble::rownames_to_column() %>% 
    group_by(High) %>%
    sample_n(0.7*n()) %>%
    mutate(rowname = as.numeric(rowname)) %>%
    pull(rowname) 
    
    carseats_test <- Carseats[-train_sample,]
    mean(carseats_test$High == "Yes")
    [1] 0.4132231
    
    tree.carseats <- tree(High~ . -Sales, Carseats, subset = train_sample)
    

    【讨论】:

    • 正如我试图描述的那样,tree() 函数不接受数据框作为输入。这对我来说似乎是一个数据框。
    • 当然。只需添加一个行名即可。
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 2020-04-15
    • 2015-12-11
    • 2017-09-20
    • 2011-05-06
    • 2013-04-21
    • 2022-07-19
    • 1970-01-01
    相关资源
    最近更新 更多