В настоящее время я использую aws ec2 для запуска моей программы r.У меня довольно большая машина (g3.4xlarge 16 47 122 GiB memory).
Я установил R studio, и мой набор данных составляет около 2 миллионов строк.(~ 1,5 ГБ)
Я разбил свой набор данных, как показано ниже:
intrain<- createDataPartition(overall_data$churn,p=0.7,list=FALSE)
set.seed(2017)
training<- overall_data[intrain,]
testing<- overall_data[-intrain,]
Затем я применил приведенный ниже код к моим тестовым данным.Мои тестовые данные около 600 тыс. Строк.Так что это довольно маленький IMO.
testing = sapply(testing, function(col) length(unique(col)))
testing=Filter(function(col)(length(unique(col))>1), testing)
testing = subset(testing, select = -c(payer_account_id))
testing[sapply(testing, is.character)] <- lapply(testing[sapply(testing, is.character)],as.factor)
Однако, когда я запускаю свою программу
LogModel <- glm(churn ~ .,family=binomial(link="logit"),data=testing)
Это говорит мне, что
> LogModel <- glm(churn ~ .,family=binomial(link="logit"),data=testing)
Error: cannot allocate vector of size 250.3 Gb
Я пытался даже с большим экземпляром ec2, но это также не удалось,Я попробовал на своем ноутбуке с Windows, и это то, что я сделал
> memory.limit(size=1800)
[1] 16222
Warning message:
In memory.limit(size = 1800) : cannot decrease memory limit: ignored
> memory.limit()
[1] 16222
> memory.limit(size = 56000)
[1] 56000
> LogModel <- glm(churn ~ .,family=binomial(link="logit"),data=testing)
Error: cannot allocate vector of size 250.1 Gb
Поэтому я весьма озадачен, почему R не может обработать такой маленький набор данных.Я ссылался на другие руководства по стековому потоку, но, похоже, все работает.
Могу ли я спросить, решил ли кто-нибудь это?