h2o.ai 与 group_by 不兼容的汇总函数
h2o.ai summary functions incompatible with group_by
我正在尝试(实质上)通过移动到 R+ 来加速一些 R 代码h2o.ai。
我按单个因子变量分组,但在尝试计算窗口分位数、偏度或峰度时出现错误。
h2o 中是否有与 split-apply-combine 方法不兼容的汇总函数列表?它是否仅适用于 sql-模拟函数,如 sum、count 或 stdev?
此代码失败:
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
错误似乎表明 skewness
有问题。有关 h2o.group_by()
中允许的聚合方法的完整列表,请参阅 documentation 的详细信息部分(页面底部)。
为了您的方便,我在这里添加了详细信息部分 - 您可以看到当前不包括偏度(如果您对此感兴趣,可以随意创建一个 JIRA ticket):
详情
在 gb.control 内的 na.methods 的情况下,有三种可能的设置。 "all" 将在函数计算中包含 NA。 "rm" 将完全删除所有 NA 字段。 "ignore" 将从分子中删除 NA,但保留这些行用于计算目的。如果提供的列表小于列组的数量,则列表将被填充 "ignore"。
请注意,要在 gb.control 列表中指定列名列表,您必须添加 col.names 参数。与 na.methods 类似,如果长度小于提供的列组数,col.names 将使用默认列名填充列表。
支持的函数包括 nrow。此函数是必需的,它接受一个字符串作为生成列的名称。其他支持的聚合函数接受 col 和 na 参数,用于指定列和 NA 的处理("all"、"ignore" 和 GroupBy 对象;max 为 GroupBy 的每个组计算 col 中指定的每个列的最大值object;mean 计算 GroupBy 对象的每组在 col 中指定的每一列的平均值;min 计算 GroupBy 对象的每一组在 col 中指定的每一列的最小值;mode 计算 col 中指定的每一列的众数GroupBy 对象的组;sd 为 GroupBy 对象的每一组计算 col 中指定的每一列的标准差;ss 为 GroupBy 对象的每一组计算 col 中指定的每一列的平方和;sum 计算 groupBy 对象的每一组的总和GroupBy 对象的每一组在 col 中指定的每一列;并且 var 计算 GroupBy 对象的每一组在 col 中指定的每一列的方差。如果提供的聚合没有值(例如,作为 max in sum(col =[=3 0=], na="all").mean(col="X5", na="all").max()), 然后假设聚合应该应用于除GroupBy 列。但是,不会对 String 列执行操作。他们将被跳过。再次注意,nrow是必填项,不能为空
我正在尝试(实质上)通过移动到 R+ 来加速一些 R 代码h2o.ai。
我按单个因子变量分组,但在尝试计算窗口分位数、偏度或峰度时出现错误。
h2o 中是否有与 split-apply-combine 方法不兼容的汇总函数列表?它是否仅适用于 sql-模拟函数,如 sum、count 或 stdev?
此代码失败:
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
错误似乎表明 skewness
有问题。有关 h2o.group_by()
中允许的聚合方法的完整列表,请参阅 documentation 的详细信息部分(页面底部)。
为了您的方便,我在这里添加了详细信息部分 - 您可以看到当前不包括偏度(如果您对此感兴趣,可以随意创建一个 JIRA ticket):
详情 在 gb.control 内的 na.methods 的情况下,有三种可能的设置。 "all" 将在函数计算中包含 NA。 "rm" 将完全删除所有 NA 字段。 "ignore" 将从分子中删除 NA,但保留这些行用于计算目的。如果提供的列表小于列组的数量,则列表将被填充 "ignore"。 请注意,要在 gb.control 列表中指定列名列表,您必须添加 col.names 参数。与 na.methods 类似,如果长度小于提供的列组数,col.names 将使用默认列名填充列表。 支持的函数包括 nrow。此函数是必需的,它接受一个字符串作为生成列的名称。其他支持的聚合函数接受 col 和 na 参数,用于指定列和 NA 的处理("all"、"ignore" 和 GroupBy 对象;max 为 GroupBy 的每个组计算 col 中指定的每个列的最大值object;mean 计算 GroupBy 对象的每组在 col 中指定的每一列的平均值;min 计算 GroupBy 对象的每一组在 col 中指定的每一列的最小值;mode 计算 col 中指定的每一列的众数GroupBy 对象的组;sd 为 GroupBy 对象的每一组计算 col 中指定的每一列的标准差;ss 为 GroupBy 对象的每一组计算 col 中指定的每一列的平方和;sum 计算 groupBy 对象的每一组的总和GroupBy 对象的每一组在 col 中指定的每一列;并且 var 计算 GroupBy 对象的每一组在 col 中指定的每一列的方差。如果提供的聚合没有值(例如,作为 max in sum(col =[=3 0=], na="all").mean(col="X5", na="all").max()), 然后假设聚合应该应用于除GroupBy 列。但是,不会对 String 列执行操作。他们将被跳过。再次注意,nrow是必填项,不能为空