开始使用免费开始使用

小示例上的 vtreat

在本练习中,您将使用 vtreat 在一个小示例上对分类变量进行独热编码(one-hot encoding)。 vtreat 会创建一个「处理方案」(treatment plan),用于将分类变量转换为指示变量(编码为 "lev"),并清洗数值变量中的异常值(编码为 "clean")。

要设计处理方案,请使用函数 designTreatmentsZ()文档

treatplan <- designTreatmentsZ(data, varlist)
  • data:原始训练数据框
  • varlist:要处理的输入变量向量(字符串)。

designTreatmentsZ() 返回的列表包含一个元素 scoreFrame:这是一个数据框,记录了新变量的名称和类型:

scoreFrame <- treatplan %>% 
            magrittr::use_series(scoreFrame) %>% 
            select(varName, origName, code)
  • varName:新处理后变量的名称
  • origName:生成该处理后变量的原始变量名称
  • code:新变量的类型。
    • "clean":已清洗的数值变量(无 NA 或 NaN)
    • "lev":源自原始分类变量某一具体取值的指示变量。

magrittr::use_series()文档)是在管道中可用的 $ 的别名。)

在本练习中,我们需要 code"clean""lev"varName

newvarlist <- scoreFrame %>% 
             filter(code %in% c("clean", "lev") %>%
             magrittr::use_series(varName)

若要将数据集转换为全部为数值且已做独热编码的变量,请使用 prepare()文档):

data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
  • treatplan:处理方案
  • data:待处理的数据框
  • varRestrictions:在处理后数据中所需的变量

dframe 数据框和 magrittr 包已预先加载。

本练习是课程的一部分

R 中的监督学习:回归

查看课程

练习说明

  • 打印 dframe。我们将假设 colorsize 为输入变量,popularity 为要预测的结果变量。
  • 创建名为 vars 的向量,其中包含输入变量的名称(字符串)。
  • 加载 vtreat 包。
  • 使用 designTreatmentsZ()vars 中的变量创建处理方案,并将其赋值给变量 treatplan
  • 从处理方案中获取并查看 scoreFrame,以了解旧变量到新变量的映射关系。
    • 您只需要列 varNameorigNamecode
    • 新的指示变量名称是什么?连续变量的名称又是什么?
  • 创建向量 newvars,其中包含 codecleanlev 时对应的 varName。打印该向量。
  • 使用 prepare() 创建新的数据框 dframe.treat,它是 dframe 的独热编码版本(不包含结果列)。
    • 打印它,并与 dframe 对比。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Print dframe
dframe

# Create and print a vector of variable names
(vars <- ___)

# Load the package vtreat
___

# Create the treatment plan
treatplan <- ___(___, ___)

# Examine the scoreFrame
(scoreFrame <- treatplan %>%
    use_series(scoreFrame) %>%
    select(___, ___, ___))

# We only want the rows with codes "clean" or "lev"
(newvars <- scoreFrame %>%
    filter(code %in% ___) %>%
    use_series(varName))

# Create the treated training data
(dframe.treat <- ___(___, ___, varRestriction = newvars))
编辑并运行代码