如何分别为每个类别运行h2o模型?

时间:2018-09-21 09:12:30

标签: r group-by dplyr h2o

对于每个类别,我都需要适合h2o模型。

  Category            a             b
       <chr>         <dbl>         <dbl>
     1   aa           36.6          1.4
     2   aa           5.30          0   
     3   bb           4.62          1.2
     4   bb           3.71          1.5
     5   cc           3.41          12
    ... ...            ...         ...   

是否可以做到这一点而无需在类别上拆分数据集,也无需在循环中对每个类别进行训练。可以使用dplyr吗?

2 个答案:

答案 0 :(得分:1)

我没有用h2o做到这一点,但也许可以为您提供帮助:

  iris%>%
   group_by(Species)%>%
   nest()%>%
   mutate(fit = map(data, ~ lm(Petal.Width ~ Petal.Length, data = .x)))
# A tibble: 3 x 3
  Species    data              fit     
  <fct>      <list>            <list>  
1 setosa     <tibble [50 x 4]> <S3: lm>
2 versicolor <tibble [50 x 4]> <S3: lm>
3 virginica  <tibble [50 x 4]> <S3: lm>

答案 1 :(得分:1)

  

对于每个类别,我都需要适合h2o模型。   是否可以在不按类别拆分数据集的情况下做到这一点?

否。

您需要循环,并为枚举中的每个级别构建一个模型(以使用h2o术语)。 (要获取类别中所有值的列表,请参见http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/frame.html#h2o.frame.H2OFrame.levels

如果您的需求更加模糊,则可以使用单个模型。即如果您认为“ chr”类别是用于预测其他价值的最有用的信息,则可以构建一个模型(例如,随机森林),如果正确,那将是每棵树,您都会有效地得到想要的东西。

但是,如果这是出于学术报告或出于监管原因,并且您需要按“ chr”列显示预测,那么您别无选择。