【问题标题】:Why is data pre-processed with caret encoded as non-tabular objects为什么使用插入符号对数据进行预处理,编码为非表格对象
【发布时间】:2020-05-23 03:43:32
【问题描述】:

我正在学习如何使用 R caret 包,我想知道为什么有很多函数将输出数据编码为不可直接用于训练或回归的对象。

例如,对于preprocessingdummyVars 函数返回一个“dummyVars”类的对象。同样,preProcess 函数返回类“preProcess”的对象。 caret::train 无法使用这些,必须先使用 stats::predict 解决,例如:

caret::dummyVars(Y ~ ., data = mydata) %>%
stats::predict(newdata = mydata)

这是有原因的吗?为什么?有什么好处?

【问题讨论】:

  • 这对于插入符号开发人员而言更像是一个问题,而不是对于 SO 社区而言,因为它没有描述需要解决的问题。答案将基于意见,所以我投票结束。

标签: r r-caret


【解决方案1】:

在对包更加熟悉之后,我想我可以提供这个问题的答案并解释这种方法的优点。

caret 包旨在用于通常不会仅使用一种预测模型来拟合数据,而是使用多种预测模型的环境。

因此,preProcess 之类的对象很有用,因为它们只是提供了处理数据的规则,之后可以根据需要将其传递给尽可能多的模型。这样可以节省编码并避免错误(例如复制粘贴错误),因为通过 trControl 参数,train 函数中的所有后续模型都可以使用相同的 preProcess 对象。

还必须注意,这些对象不会保存整个“预处理”数据集(例如 dummyVars,而只是在训练期间或预处理期间使用的规则。这也有助于在以下情况下节省内存人们可能倾向于积累许多临时变量和数据帧。

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 2020-05-11
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多