我正在学习如何使用R 擦边球 包,我想知道为什么有很多函数将输出数据编码为不可直接用于训练或回归的对象。
例如,对于 预处理జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ dummyVars
函数返回一个 "dummyVars "类的对象。同样地, preProcess
函数返回一个 "preProcess "类的对象。这些对象不能被 caret::train
,必须先与之解决 stats::predict
喜欢。
caret::dummyVars(Y ~ ., data = mydata) %>%
stats::predict(newdata = mydata)
有什么原因吗?为什么要这样做?这样做有什么好处?
在熟悉了这个包之后,我想我可以为这个问题提供一个答案,并解释这种方法的优点。
该 caret
包的目的是在这样的情况下使用,即通常不会只使用一个预测模型来适应数据,而是使用许多模型。
因此,对象如 preProcess
是很有用的,因为它们只是提供了处理数据的规则,而这些规则随后可以根据需要传递给多个模型。这节省了编码并避免了错误(例如复制粘贴错误),因为相同的 preProcess
对象可用于所有后续模型的 train
的功能,通过 trControl
参数。
还必须注意的是,这些对象并不保存整个 "预处理 "的数据集(例如,在训练过程中使用的规则,或者在预处理过程中使用的规则)。dummyVars
而只是保存在训练期间或预处理期间使用的规则。这也有助于在一个可能倾向于积累许多临时变量和数据帧的情况下节省内存。