【发布时间】: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