小示例上的 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。我们将假设color和size为输入变量,popularity为要预测的结果变量。 - 创建名为
vars的向量,其中包含输入变量的名称(字符串)。 - 加载
vtreat包。 - 使用
designTreatmentsZ()为vars中的变量创建处理方案,并将其赋值给变量treatplan。 - 从处理方案中获取并查看
scoreFrame,以了解旧变量到新变量的映射关系。- 您只需要列
varName、origName和code。 - 新的指示变量名称是什么?连续变量的名称又是什么?
- 您只需要列
- 创建向量
newvars,其中包含code为clean或lev时对应的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))