Как уменьшить размер данных в R? - PullRequest
3 голосов
/ 21 марта 2019

У меня есть файл CSV, в котором 600 000 строк и 1339 столбцов, что составляет 1,6 ГБ.1337 столбцов - это двоичные файлы, принимающие либо 1, либо 0 значений, а другие 2 столбца - числовые и символьные переменные.

Я извлек данные, используя пакет readr со следующим кодом

VLU_All_Before_Wide <- read_csv("C:/Users/petas/Desktop/VLU_All_Before_Wide_Sample.csv")

Когда я проверялРазмер объекта, используя следующий код, составляет около 3 ГБ.

> print(object.size(VLU_All_Before_Wide),units="Gb")
3.2 Gb

На следующем шаге, используя приведенный ниже код, я хочу создать обучающий и тестовый набор для регрессии LASSO.

set.seed(1234)
train_rows <- sample(1:nrow(VLU_All_Before_Wide), .7*nrow(VLU_All_Before_Wide))

train_set <- VLU_All_Before_Wide[train_rows,]
test_set <- VLU_All_Before_Wide[-train_rows,]

yall_tra <- data.matrix(subset(train_set, select=VLU_Incidence))
xall_tra <- data.matrix(subset(train_set, select=-c(VLU_Incidence,Replicate)))
yall_tes <- data.matrix(subset(test_set, select=VLU_Incidence))
xall_tes <- data.matrix(subset(test_set, select=-c(VLU_Incidence,Replicate)))

Когда я начал сеанс R, объем оперативной памяти составлял ~ 3 ГБ, а к тому времени, когда я выполнил весь приведенный выше код, теперь он составлял 14 ГБ, из-за чего возникла ошибка: не удается выделить вектор размером 4 ГБ.Не было другого приложения, кроме 3-х хромированных окон.Я удалил исходный набор данных, обучающий и тестовый наборы данных, но он уменьшил ОЗУ только на 0,7 ГБ.

rm(VLU_All_Before_Wide)
rm(test_set)
rm(train_set)

Спасибо, если кто-то может подсказать мне способ уменьшения размера данных.

Спасибо

1 Ответ

1 голос
/ 21 марта 2019

R борется, когда дело доходит до огромных наборов данных, потому что он пытается загрузить и сохранить все данные в оперативной памяти. Вы можете использовать другие пакеты, доступные в R, которые предназначены для обработки больших наборов данных, например 'bigmemory и ff. Проверьте мой ответ здесь , в котором рассматривается аналогичная проблема.

Вы также можете выполнить некоторую обработку и обработку данных вне R и удалить ненужные столбцы и строки. Но все же, для обработки наборов данных об ошибках лучше использовать подходящие пакеты.

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