代码之家  ›  专栏  ›  技术社区  ›  EngrStudent

h2o。ai摘要功能与group_by不兼容

  •  0
  • EngrStudent  · 技术社区  · 6 年前

    我试图(实质上)通过移动到R+h2o来加速一些R代码。人工智能。

    我用一个单因子变量进行分组,但当我试图计算加窗分位数、偏度或峰度时,会出现错误。

    h2o中是否有与拆分-应用-合并方法不兼容的摘要函数列表?它是否只适用于sum、count或stdev等sql模拟函数?

    此代码失败:

    for(i in col_idx_list){
      proc_cols_list <- names(df.hex)[i]
    
      group_cols_list <- c("group_variable_factor")
    
      h2o.quantile(x=df.hex[,proc_cols_list])
    
      temp <- h2o.group_by(data=df.hex,
                           by=group_cols_list,
                           mean(proc_cols_list),
                           var(proc_cols_list),
                           skewness(proc_cols_list),
                           gb.control=list(na.methods="ignore")  )
    
      if(i ==first_index){
        df_summs <- temp
      } else {
        df_summs <- h2o.cbind(df_summs , temp[,2:ncol(temp)])
      }
    }
    

    这段代码运行良好:

    for(i in col_idx_list){
      proc_cols_list <- names(df.hex)[i]
    
      group_cols_list <- c("group_variable_factor")
    
      h2o.quantile(x=df.hex[,proc_cols_list])
    
      temp <- h2o.group_by(data=df.hex,
                           by=group_cols_list,
                           mean(proc_cols_list),
                           var(proc_cols_list),
                           gb.control=list(na.methods="ignore")  )
    
      if(i ==first_index){
        df_summs <- temp
      } else {
        df_summs <- h2o.cbind(df_summs , temp[,2:ncol(temp)])
      }
    }
    

    错误文本(为简洁起见被截断):

    ERROR: Unexpected HTTP Status code: 400 Bad Request (url = http://localhost:54321/99/Rapids)
    Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page,  : 
    ERROR MESSAGE:
    No enum constant water.rapids.ast.prims.mungers.AstGroup.FCN.skewness
    ERROR: Unexpected HTTP Status code: 404 Not Found (url = http://localhost:54321/3/Frames/RTMP_sid_8712_17?row_count=10)
    
    ERROR MESSAGE:
    
    Object 'RTMP_sid_8712_17' not found for argument: key
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Lauren    6 年前

    这个错误似乎表明 skewness 这是个问题。查看中允许的聚合方法的完整列表 h2o.group_by() 请参阅 documentation .

    为方便起见,我在这里添加了详细信息部分——你可以看到,目前不包括歪斜(如果这是你感兴趣的东西,请随意创建一个 JIRA ticket ):

    细节 就na而言。gb范围内的方法。控件,有三种可能的设置。“全部”将在函数计算中包括NAs。“rm”将完全删除所有NA字段。“忽略”将从分子中删除NAs,但出于计算目的保留行。如果提供的列表小于列组数,则该列表将被“忽略”填充。 请注意,要指定gb中的列名列表。控件列表中,必须添加col.names参数。与na相似。方法,如果长度小于提供的列组数,col.names将用默认列名填充列表。 支持的功能包括nrow。此函数是必需的,并接受一个字符串作为生成列的名称。其他受支持的聚合函数接受col和na参数,用于指定列和NAs的处理(“all”、“ignore”,以及分组对象;max为GroupBy对象的每组计算col中指定的每列的最大值;平均值计算GroupBy对象每组在col中指定的每列的平均值;min为GroupBy对象的每组计算col中指定的每列的最小值;mode为GroupBy对象的每组计算col中指定的每列的模式;sd计算GroupBy对象每组在col中指定的每列的标准偏差;ss计算GroupBy对象每组在col中指定的每列的平方和;sum计算GroupBy对象每组在col中指定的每列的总和;var计算GroupBy对象的每组在col中指定的每列的方差。如果提供的聚合没有值(例如,作为最大和(col=“X1”,na=“all”)。平均值(col=“X5”,na=“全部”)。max()),则假定聚合应应用于除GroupBy列之外的所有列。但是,不会对字符串列执行操作。他们将被跳过。再次注意,nrow是必需的,不能为空。