Ckmeans.1d.dp - K-Means против K-Median: разница в выходе - PullRequest
0 голосов
/ 10 февраля 2020

В настоящее время я работаю над кодом для кластеризации оценок студентов, используя подход K-Means / K-Medians. Я случайно наткнулся на библиотеку Ckmeans.1d.dp и использую обе функции. Тем не менее, я немного озадачен тем, почему результаты двух методов могут быть разными. Ниже приведен код в R для примера:

set.seed(1)
i <- 3
norm <- rnorm(90, mean = 65, sd = 3)
norm = as.integer(norm)
lower <- list(50,50,50,50,50)
upper <- list(90,90,90,90,90)
combine = append(norm, lower)
combine = append(combine, upper)
combine <- sort(unlist(combine), decreasing=FALSE)

result_outliers <- Ckmeans.1d.dp(x=combine, i)
sum_outliers <- 0
epdfPlot(combine, xlim = c(20, 90), epdf.col = "red", 
         xlab = "Value of Random Variable", 
         main = "Normal distribution with outliers", discrete = TRUE, type= "h")
for (val in 1:i){
  sum_outliers = result_outliers$size[val] + sum_outliers
  abline(v=combine[sum_outliers], lwd=2)
  print(combine[sum_outliers])
}

Для метода K-средних показаны результаты:

точки останова: 50, 72, 90

Точно такой же код теперь запущен, но изменен с Ckmeans.1d.dp на Ckmedian.1d.dp. Результат показан ниже: точки останова: 64, 72, 90

Результаты двух кластеров разные, что меня удивляет. Хотя верно, что среднее значение и медиана данных - это две совершенно разные вещи, математически K-средние и K-медиана должны давать один и тот же кластер. например, {1,2,3,4,5,100}, k = 2, кластеры должны быть {1,2,3,4,5} {100} для обоих методов, даже если среднее значение и медиана разные. Поэтому мне любопытно, как два результата, которые я показал, могут давать разные интервалы. Данные получены с фиксированным начальным числом (1).

Буду очень признателен, если кто-нибудь сможет мне помочь с этим: /

...