Я хочу разбить вектор (длиной около 10 ^ 5) на пять классов. С помощью функции classInterval
из пакета classInt
я хотел использовать естественные разрывы style = "jenks"
, но это занимает непомерно много времени даже для гораздо меньшего вектора. всего 500. Установка style = "kmeans"
выполняется почти мгновенно.
library(classInt)
my_n <- 100
set.seed(1)
x <- mapply(rnorm, n = my_n, mean = (1:5) * 5)
system.time(classIntervals(x, n = 5, style = "jenks"))
R> system.time(classIntervals(x, n = 5, style = "jenks"))
user system elapsed
13.46 0.00 13.45
system.time(classIntervals(x, n = 5, style = "kmeans"))
R> system.time(classIntervals(x, n = 5, style = "kmeans"))
user system elapsed
0.02 0.00 0.02
Что делает алгоритм Дженкса таким медленным и есть ли более быстрый способ его запустить?
При необходимости я перенесу последние две части вопроса на stats.stackexchange.com: