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
答案 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函数saveRDS
和loadRDS
也可以完成此任务;它们的用法完全相似,而且它们seem to be preferable。