Einfacher Ansatz zum Zuweisen von Clustern für neue Daten nach k-means Clustering

Ich führe k-means-Clustering für einen Datenrahmen df1 aus und suche nach einem einfachen Ansatz, um für jede Beobachtung in einem neuen Datenrahmen df2 (mit denselben Variablennamen) das nächstgelegene Clusterzentrum zu berechnen. Stellen Sie sich df1 als Trainingssatz und df2 als Testsatz vor. Ich möchte das Trainingsset gruppieren und jeden Testpunkt dem richtigen Cluster zuordnen.

Ich weiß, wie man das mit dem machtapply Funktion und ein paar einfache benutzerdefinierte Funktionen (vorherige Beiträge zum Thema haben normalerweise etwas Ähnliches vorgeschlagen):

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)

Ich bereite dieses Clustering - Beispiel jedoch für einen Kurs vor, in dem die Schüler mit dem Thema nicht vertraut sindapply funktion, also würde ich es vorziehen, wenn ich die cluster mit einer eingebauten funktion df2 zuweisen könnte. Gibt es praktische integrierte Funktionen, um den nächstgelegenen Cluster zu finden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage