Ответ 1
Чтобы ответить на ваш оригинальный вопрос:
Что делает алгоритм Дженкса настолько медленным, и есть более быстрый способ запустить его?
Действительно, между тем существует более быстрый способ применения алгоритма Jenks, setjenksBreaks
в пакете BAMMtools
.
Однако помните, что вам нужно установить количество разрывов по-разному, то есть, если вы установите разрывы на 5 в функции classIntervals
пакета classInt
, вы должны установить разрывы на 6 setjenksBreaks
в пакете BAMMtools
, чтобы получить те же результаты.
# Install and load library
install.packages("BAMMtools")
library(BAMMtools)
# Set up example data
my_n <- 100
set.seed(1)
x <- mapply(rnorm, n = my_n, mean = (1:5) * 5)
# Apply function
getJenksBreaks(x, 6)
Скорость вверх огромна, т.е.
> microbenchmark( getJenksBreaks(x, 6, subset = NULL), classIntervals(x, n = 5, style = "jenks"), unit="s", times=10)
Unit: seconds
expr min lq mean median uq max neval cld
getJenksBreaks(x, 6, subset = NULL) 0.002824861 0.003038748 0.003270575 0.003145692 0.003464058 0.004263771 10 a
classIntervals(x, n = 5, style = "jenks") 2.008109622 2.033353970 2.094278189 2.103680325 2.111840853 2.231148846 10