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) вычислений расстояния, что займет много времени!)