Я хочу разбить вектор (длина около 10 ^ 5) на пять классов. С помощью функции classIntervals
из пакета 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
Что делает алгоритм Jenks настолько медленным, и есть ли более быстрый способ его запуска?
Если нужно, я переместлю последние две части вопроса в stats.stackexchange.com:
- При каких обстоятельствах километр является разумной заменой Дженксу?
- Разумно ли определять классы, запустив classInt на случайном 1% подмножестве точек данных?