开始使用免费开始使用

新出现的类别水平

当某个分类变量的某个水平很少见时,它有可能没有出现在训练数据中。如果这个稀有水平后来出现在未来数据里,下游模型可能不知道如何处理。出现这种「新出现的类别水平」(novel levels)时,使用 model.matrixcaret::dummyVars 进行独热编码将无法正确工作。

vtreat 是用于独热编码时比 model.matrix 更「安全」的替代方案,因为它可以安全地处理新出现的类别水平。vtreat 还会处理数据中的缺失值(包括分类和连续变量)。

在本练习中,您将看到 vtreat 如何处理训练集里未出现过的分类取值。 上一练习得到的处理方案 treatplan 和变量集合 newvars 仍然可用。 dframe 以及新的数据框 testframe 已经预先加载。

本练习是课程的一部分

R 中的监督学习:回归

查看课程

练习说明

  • 打印 dframetestframe
    • testframe 中是否存在 dframe 里没有出现过的颜色?
  • 调用 prepare() 创建去掉结果变量后的 testframe 的独热编码版本。命名为 testframe.treat 并打印。
    • 使用参数 varRestriction 将变量限制为只包含 newvars 中的变量。
    • 黄色行是如何被编码的?

交互式实操练习

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

# treatplan is available
summary(treatplan)

# newvars is available
newvars

# Print dframe and testframe
___
___

# Use prepare() to one-hot-encode testframe
(testframe.treat <- ___(___, ___, varRestriction = ___))
编辑并运行代码