问题描述
以前从未遇到过这个问题,但是现在我编写的任何代码都一直存在。
> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
Random number generation:
RNG: Mersenne-Twister
normal: Inversion
Sample: Rounding
我有一个1482236个观测值和52个变量的数据集。其中35个是因子,19个是数字。我的一些因素是巨大的,有很多层次: 这些是最高的:
forename: 114942 levels
surname: 201988 levels
postcode:793876 levels
partnername: 9164 levels
我尝试了不同的功能,但由于相同的原因它们均无法正常工作: 错误:无法分配大小为X的向量
- 分类变量的相关性:
df <- DFOld %>% dplyr::select_if(~class(.)=='factor') #create a dataframe just for factors
##function to get chi square p value and Cramers V
f = function(x,y) {
tbl = df %>% dplyr::select(x,y) %>% table()
chisq_pval = round(chisq.test(tbl)$p.value,4)
cramV = round(cramersV(tbl),4)
data.frame(x,y,chisq_pval,cramV) }
##create unique combinations of column names
df_comb = data.frame(t(combn(sort(names(df)),2)),stringsAsFactors = F)
df_res = map2_df(df_comb$X1,df_comb$X2,f)
Error: cannot allocate vector of size 7.9 Gb
2。小鼠插补
impute <- mice(df,m=3,nnet.MaxNWts=3000,seed=123,meth='cart') #,meth='cart'
Error: cannot allocate vector of size 100.1 Gb
3。 XgBoostModel
library(xgboost)
set.seed(123)
caret.cv.Test <- train(HasProduct ~.,data=roseTest
[,!(colnames(roseTest)%in% c("id"
))],method = "xgbTree",tune.gridV0= tune.grid,trControl = train.control,)
Error: cannot allocate vector of size 100.1 Gb
我试图每次考虑考虑一半的数据集,以减少观察次数,但这没有区别。 我也尝试扩展内存:
> memory.size()
[1] 29882.43
> memory.limit()
[1] 32447
> memory.limit(size=500000)
[1] 5e+05
它没有任何作用
我也清理了垃圾
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 4570479 244.1 12169265 650.0 13298034 710.2
Vcells 144700496 1104.0 5750893687 43875.9 5988830217 45691.2
什么都没有创造任何差异,唯一起作用的是排除了这些变量:
forename: 114942 levels
surname: 201988 levels
postcode:793876 levels
partnername: 9164 levels
您知道是否有办法在不杀死RAM的情况下保留这些变量吗?
请提供帮助,
欢呼
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)