ошибка kmeans при указании начальных кластерных центров в R? - PullRequest
1 голос
/ 15 марта 2019

Я пытаюсь запустить kmeans шаг за шагом в R. Когда я устанавливаю iter.max = 1 и указываю стартовые кластерные центры вместо k, алгоритм, кажется, работает до тех пор, пока не сходится вместо указанной 1 итерации.

Может ли кто-нибудь подтвердить, что это известная ошибка?Если нет, то что-то мне не хватает?

Вот мой код для справки:

# Set up data
data <- data.frame(names = c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2"), 
                   x = c(2, 2, 8, 5, 7, 6, 1, 4),
                   y = c(10, 5, 4, 8, 5, 4, 2, 9))

initial_centers <- matrix(c(2, 5, 1, 10, 8, 2), ncol=2)

# Run k means for 1 iteration
model <- kmeans(data[,-1], initial_centers, iter.max=1)
model$centers

# Actual Output:
#          x        y
# 1 3.666667 9.000000
# 2 7.000000 4.333333
# 3 1.500000 3.500000

# Expected Output:
#          x        y
# 1 2.000000 10.00000
# 2 6.000000 6.000000
# 3 1.500000 3.500000

1 Ответ

1 голос
/ 16 марта 2019

Алгоритм k-средних по умолчанию в R более умный, чем то, что вы узнали в классе. Это алгоритм Хартигана и Вонга.

Если вы хотите назначить каждую точку ближайшему предопределенному центру, не злоупотребляйте kmeans для этого. Вместо этого просто запишите расстояния и используйте argmin.

...