将分类变量治疗计划保存在R

时间:2018-06-19 14:50:41

标签: r

R包vtreat提供了一种为分类变量创建“单编码器”的简便方法(请参阅Win-Vector blog上的相关文章)。有什么方法可以保存治疗计划 tplan对象以供进一步使用(例如,Python中pickle的等效机制)。

tplan <- vtreat::designTreatmentsZ(dTrain, vars)
oneHotEncoded <- as.matrix(vtreat::prepare(tplan, dTrain, varRestriction = vars))

dTrain不再可用的情况下,我想转换通过该特定治疗计划(在dTrain上计算)获得的所有数据。也就是说,下次下次调用脚本时,我无法重用dTrain

P.s。该解决方案不应仅限于使用vtreat

1 个答案:

答案 0 :(得分:0)

Base R为此目的提供了常规功能save()load()

这是使用您链接到的帖子中的代码段的可复制示例:

library(titanic)
library(vtreat)

data(titanic_train)

outcome <- 'Survived'
target <- 1
shouldBeCategorical <- c('PassengerId', 'Pclass', 'Parch')
for(v in shouldBeCategorical) {
  titanic_train[[v]] <- as.factor(titanic_train[[v]])
}
tooDetailed <- c("Ticket", "Cabin", "Name", "PassengerId")
vars <- setdiff(colnames(titanic_train), c(outcome, tooDetailed))


dTrain <- titanic_train

set.seed(4623762)
tplan <- vtreat::designTreatmentsZ(dTrain, vars, 
                                   minFraction= 0,
                                   verbose=FALSE)


save(tplan, file='tplan.RData')

文件tplan.RData将保存在您当前的工作目录中;之后,在新的R会话中,当您要求

load('tplan.RData')

您将获得tplan变量。

或者,基本R函数saveRDSloadRDS也可以完成此任务;它们的用法完全相似,而且它们seem to be preferable