我正在权衡使用一个单片模型的效果,而不是分成大约100,000行数据的两个不同模型(拆分模型)。为此,我从我的拆分模型得到结果:
preds <- numeric(nrow(DF))
for (i in 1:nrow(DF))
{
if (DF[i,]$col == condition)
{
preds[i] <- predict(glm1, DF[i,])
}
else
{
preds[i] <- predict(glm2, DF[i,])
}
}
无论出于何种原因,这似乎都非常缓慢,特别是与刚刚按下整个数据框相比:
preds <- predict(glm1,DF)
您对如何优化第一个代码段有什么想法吗?
答案 0 :(得分:1)
preds1 <- predict(glm1, DF[DF$col == condition, ])
preds2 <- predict(glm2, DF[DF$col != condition,])
如果您想在保存向量中使用c()
。
如果你想构建一个数据框,其实际值和预测值按condition
分层,那么首先要建立一个包含'实际'和cond
变量的结构,其中一些目前尚未命名或者归因于任何特定结构,因此我假设它们位于名为DF
的数据框中,列名为“actual”:
compare.df <- data.frame(act=DF$actual, cond =DF$col, pred = NA)
compare.df[DF$col==condition, 'pred'] <-
predict(glm1, DF[DF$col == condition, ])
compare.df[DF$col !=condition, 'pred'] <-
predict(glm2, DF[DF$col != condition, ])