Ich bin k-Means Clustering auf einem Datenrahmen df1, und ich bin auf der Suche nach einem einfachen Ansatz zur Berechnung der nächsten Cluster-Zentrum für jede Beobachtung in a neuer Datenrahmen df2 (mit den gleichen Variablennamen). Stellen Sie sich df1 als Trainingssatz und df2 im Testset vor; Ich möchte auf dem Trainingssatz clustern und jeden Testpunkt dem richtigen Cluster zuweisen.Einfacher Ansatz zum Zuweisen von Clustern für neue Daten nach k-Means Clustering
Ich weiß, wie dies zu tun mit der apply
Funktion und ein paar einfachen benutzerdefinierten Funktionen (iV Beiträge zum Thema haben in der Regel vorgeschlagen, so ähnlich):
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)
Allerdings bin ich der Vorbereitung dieses Clustering Beispiel für einen Kurs, in dem Studenten mit der apply
Funktion nicht vertraut sind, also würde ich viel bevorzugen, wenn ich die Cluster zu df2 mit einer eingebauten Funktion zuweisen könnte. Gibt es irgendwelche praktischen eingebauten Funktionen, um den nächsten Cluster zu finden?
[Hier ist eine große Ressource unterscheidet sich Clusterverfahren mit r Code und Erläuterungen zu versuchen] (http://manuals.bioinformatics.ucr.edu/home/R_BioCondManual# TOC-Clustering-Übungen) Es gibt auch das [biganalytics-Paket] (http://cran.r-project.org/web/packages/biganalytics/biganalytics.pdf), das nicht auf Speicher beruht und ein K-Mittel hat Algorithmus – marbel
Es erscheint sinnvoller, Schüler mit 'apply()' (was sie sowieso immer wieder verwenden) vertraut zu machen und Ihre relativ einfache Methode zu verwenden, um sie in eine Reihe von verschiedenen Paketen einzuführen, die sie für besondere Anlässe behalten müssen (wenn sie sie jemals wieder benutzen). – naught101