我在大型数据集上使用H2O,8百万行和10列。我使用h2o.randomForest训练了我的randomForest。该模型训练良好,预测也正常。现在我想将我的预测转换为data.frame。我这样做了:
A2=h2o.predict(m1,Tr15_h2o)
pred2=as.data.frame(A2)
但它太慢了,需要永远。有没有更快的方法从H2o转换为data.frame或data.table?
答案 0 :(得分:4)
以下是一些代码,演示了如何在后端使用data.table包,以及我的macbook上的一些基准测试:
library(h2o)
h2o.init(nthreads = -1, max_mem_size = "16G")
hf <- h2o.createFrame(rows = 10000000)
options("h2o.use.data.table"=FALSE) #no data.table
system.time(df <- as.data.frame(hf))
# user system elapsed
# 224.387 13.274 272.252
options("datatable.verbose"=TRUE)
options("h2o.use.data.table"=TRUE) # use data.table
system.time(df2 <- as.data.frame(hf))
# user system elapsed
# 50.686 4.020 82.946
如果您启用此选项,则在使用data.table时可以获得更详细的信息:options("datatable.verbose"=TRUE)
。
答案 1 :(得分:0)
在导出到预测数据帧或将其转换为其他类型时,我们已经看到了大型预测数据集的这个问题需要很长时间。我已经打开了以下JIRA来跟踪它:
答案 2 :(得分:0)
是的,有一些新选项可以使用data.table::fread
启用以加快速度。输入h2o:::as.data.frame.H2OFrame
以查看包含选项或H2O发行说明的少量R源代码。还请尝试dev中的fread
最新版TRANSFORM First(Responsable.ResponsableAbrege) AS PremierDeResponsableAbrege
SELECT wCalendrier.Entite, Entite.DescriptionAbrege, Tache.Tache, Fonction.Abréviation, Module.Module, Fonction.NoFonction, Tache.NoTache, First(wCalendrier.PremierResponable) AS PremierDePremierResponable
FROM RecupererResponsable, Fonction INNER JOIN ([Module] INNER JOIN (Équipe INNER JOIN (((wCalendrier INNER JOIN Tache ON wCalendrier.NoTache = Tache.NoTache) INNER JOIN Responsable ON wCalendrier.NoResponsable = Responsable.NoResponsable) INNER JOIN Entite ON wCalendrier.Entite = Entite.Entite) ON (Équipe.NoÉquipe = Responsable.Equipe) AND (Équipe.NoÉquipe = Responsable.Equipe)) ON Module.NoModule = Tache.Module) ON Fonction.NoFonction = Tache.Fonction
GROUP BY wCalendrier.Entite, Entite.DescriptionAbrege, Tache.Tache, Fonction.Abréviation, Module.Module, Fonction.NoFonction, Tache.NoTache
PIVOT "D" & [Sequence] In ("D1","D2","D3","D4","D5","D6","D7","D8","D9","D10","D11","D12","D13","D14","D15");
,该版本现在与昨天相同。
用户报告成功后,我们可以默认启用默认设置。