【问题标题】:Column limit in H2O data frame?H2O数据框中的列限制?
【发布时间】:2017-12-01 20:27:14
【问题描述】:

我正在使用 R 中的一个数据集,其中包含 42,457 行和 785 列。第一列是二元响应变量(称为label),其余列是二元特征。

我尝试使用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 数据帧中加载它,以便在包中分发对象。

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

【问题讨论】:

    标签: r apache-spark h2o


    【解决方案1】:

    我们使用的是 Spark 1.6.2,我相信这是known bug

    【讨论】:

      【解决方案2】:

      H2O 中没有明确的列限制(当然不是 785,这并不大)。 Spark 1.6 现在已经很老了,我建议继续前进。

      看看你所看到的是否与这个问题有关:

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

      如果是这样,发现的一种解决方法是先在 Spark 中缓存()数据帧,然后再将其传递给 H2O。

      【讨论】:

        猜你喜欢
        • 2015-03-24
        • 2019-06-22
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 2019-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多