R中大数据帧的一键编码

时间:2020-03-09 11:55:41

标签: r xgboost one-hot-encoding

我正在尝试在R中运行XGBoost,并且当我一步一步完成编码时:

df_1h <- one_hot(df, cols = "auto", sparsifyNAs = FALSE, naCols = FALSE,
                 dropCols = TRUE, dropUnusedLevels = FALSE)

我收到以下错误:

Error in CJ(1:24000, 1:1172779) : 
Cross product of elements provided to CJ() would result in 28146696000 rows which exceeds .Machine$integer.max == 2147483647

我的数据集包括大约220 000个观测值和180个变量。例如,如果将其减少到300行,它将起作用。在这种情况下,您能建议我如何进行吗?

1 个答案:

答案 0 :(得分:0)

您可以使用不占用太多内存的稀疏模型矩阵。首先,将您的字符变量转换为因子,然后运行该函数。

<h:form>
  <p:fragment>
    <p:rating value="#{myBean.rating}"/>
    <p:commandButton value="Save"
                     action="#{myBean.save()}"/>
  </p:fragment>
</h:form>