R Ошибка пакета кластера Длинные векторы функции Daisy() (аргумент 11) не поддерживаются в.C

Пытаясь преобразовать data.frame с числовыми, номинальными и NA значениями в матрице различий, используя daisy функция от cluster пакет в R. Моя цель заключается в создании матрицы различий до применения кластеризации k-средних для сегментации клиентов. data.frame имеет 133 153 строки и 36 столбцов. Вот моя машина.

sessionInfo()
R version 3.1.0 (2014-04-10)
Platform x86_64-w64-mingw32/x64 (64-bit) 

Как я могу исправить предупреждение?

Поскольку на компьютере под управлением ОС Windows 3 ГБ ОЗУ, я увеличил виртуальную память до 100 ГБ, надеясь, что этого будет достаточно для создания матрицы - она ​​не работает. Я все еще получил пару ошибок о памяти. Я рассмотрел другие пакеты R для решения проблемы с памятью, но они не работают. Я не могу использовать bigmemory с biganalytics пакет, потому что он принимает только числовые матрицы. clara а также ff Пакеты также принимают только числовые матрицы.

КРАН-х cluster Пакет предлагает коэффициент подобия газонокосилки в качестве меры расстояния до применения k-средних. Коэффициент газонокосилки принимает числовые, номинальные значения и значения NA.

Store1 <- read.csv("/Users/scdavis6/Documents/Work/Client1.csv", head=FALSE)
df <- as.data.frame(Store1)
save(df, file="df.Rda")
library(cluster)
daisy1 <- daisy(df, metric = "gower", type = list(ordratio = c(1:35)))
#Error in daisy(df, metric = "gower", type = list(ordratio = c(1:35))) :
#long vectors (argument 11) are not supported in .C

** РЕДАКТИРОВАТЬ: у меня RStudio подключен к Amazon Web Service (AWS) r3.8xlarge с 244 ГБ памяти и 32 vCPU. Я попытался создать матричную матрицу на моем компьютере, но мне не хватило оперативной памяти. **

** РЕДАКТИРОВАНИЕ 2: Я использовал функцию Клары для кластеризации набора данных. **

#50 samples
clara2 <- clara(df, 3, metric = "euclidean", stand = FALSE, samples = 50,
                rngR = FALSE, pamLike = TRUE)

1 ответ

Решение

Используйте алгоритмы, которые не требуют O (n ^ 2) памяти, если у вас много данных. Переключение на диск снижает производительность, это не разумный вариант.

Вместо этого попробуйте либо уменьшить размер набора данных, либо использовать ускорение индекса, чтобы избежать затрат памяти O (n ^ 2). (И это не только O (n ^ 2) памяти, но и O (n ^ 2) вычислений расстояния, что займет много времени!)

Другие вопросы по тегам