2017-06-28 22 views
1

我正在使用R中包含42,457行和785列的数据集。第一列是二进制响应变量(称为label),其余列是二进制功能。H2O数据框中的列限制?

我试图使用rsparkling(描述为here)来拟合逻辑回归模型,但得到错误。我将其追溯到将表格的Spark版本转换为H2O数据框架的步骤。

这里是我用来测试的功能。的Spark实例sc启动并运行和df是原始数据设置为一个标准的R数据帧:

load_h2o <- function(df, rows = nrow(df), cols = ncol(df)) { 
     df <- df[1:rows, 1:cols] 
     copy_to(sc, df, "df", overwrite = TRUE) 
     df_tbl <- tbl(sc, "df") 
     h2o_tbl <- as_h2o_frame(sc, df_tbl, strict_version_check=FALSE) 
     return(h2o_tbl) 
} 

df$label头是1 1 1 0 0 0。然而,如果我加载完整的数据集,即load_h2o(raw_data),得到的label列的头部是0 0 0 0 0 0;事实上,H2O数据帧中的所有值都是0.如果我将列数限制为200(即load_h2o(raw_data, cols = 200)),那么生成的H2O数据帧包含所有预期的数据。如果cols = 201,我们回到全零。

最后,如果我从h2o::h2o.importFile直接从磁盘加载数据集,那么完整的数据集就会毫无问题地出现,而且我能够适应逻辑回归。不过,我希望能够从R数据框中加载它,以便在包中分发对象。

此工作流程的最大列数是否有限制?

回答

0

H2O中没有明确的列限制(当然不是在785,这不是很大)。 Spark 1.6现在已经很老了,我推荐向前迈进。

看看你看到的可能与此问题相关的内容:

https://0xdata.atlassian.net/browse/PUBDEV-3808

如果是这样,这是一个发现的解决方法是将它传递给H2O前.cache()Spark中数据帧。