2017-06-28 66 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中數據幀。