Простой подход к назначению кластеров для новых данных после кластеризации k-средних

Я запускаю кластеризацию k-средних на фрейме данных df1 и ищу простой подход к вычислению ближайшего центра кластера для каждого наблюдения в новом фрейме данных df2 (с теми же именами переменных). Думайте о df1 как об обучающем наборе, а df2 о тестовом наборе; Я хочу кластеризоваться на тренировочном наборе и назначить каждую контрольную точку правильному кластеру.

Я знаю, как это сделать сapply функция и несколько простых пользовательских функций (предыдущие посты по теме обычно предлагали нечто подобное):

df1 <- data.frame(x=runif(100), y=runif(100))
df2 <- data.frame(x=runif(100), y=runif(100))
km <- kmeans(df1, centers=3)
closest.cluster <- function(x) {
  cluster.dist <- apply(km$centers, 1, function(y) sqrt(sum((x-y)^2)))
  return(which.min(cluster.dist)[1])
}
clusters2 <- apply(df2, 1, closest.cluster)

Тем не менее, я готовлю этот пример кластеризации для курса, в котором студенты будут незнакомы сapply функция, поэтому я бы предпочел, чтобы я мог назначить кластеры для df2 со встроенной функцией. Есть ли удобные встроенные функции для поиска ближайшего кластера?

Ответы на вопрос(2)

Ваш ответ на вопрос