R: как мне выделить большой вектор - PullRequest
0 голосов
/ 24 ноября 2018

В настоящее время я использую 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 не может обработать такой маленький набор данных.Я ссылался на другие руководства по стековому потоку, но, похоже, все работает.

Могу ли я спросить, решил ли кто-нибудь это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...