【发布时间】:2020-03-09 11:55:41
【问题描述】:
我正在尝试在 R 中运行 XGBoost,当我到达使用 one-hot 编码的步骤时:
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 行,它就会起作用。你能告诉我在这种情况下如何进行吗?
【问题讨论】:
-
尝试使用 model.matrix 或 sparse.model.matrix 代替:rdocumentation.org/packages/stats/versions/3.6.2/topics/… 我不确定拥有这么多列是否是个好主意....也许先进行降维。
-
感谢您的及时回复!我已将列数减少到 7。因此,我设法增加了行数。但是,它仍然说:“错误:无法分配大小为 4.0 Gb 的向量”。您能否推荐另一种单热编码方式? Sparse.model.matrix 仍然需要在此之前对数据集进行一次热编码,对吧?
-
不,它只是要求数据集有因子而不是字符。
-
已解决问题,再次感谢!
-
我只会输入它作为关闭线程的答案:)
标签: r xgboost one-hot-encoding