Frage:
Vorhersage des Clusters eines neuen Objekts mit km in R.
user333
2011-07-04 19:32:46 UTC
view on stackexchange narkive permalink

Ich habe meinen Trainingsdatensatz verwendet, um den Cluster mithilfe der kmenas-Funktion anzupassen.

  fit <-kmeans (ca.data, 2);  

Wie kann ich Verwenden Sie das Fit-Objekt, um die Cluster-Mitgliedschaft in einem neuen Dataset vorherzusagen?

Danke

Vier antworten:
#1
+16
Nick Sabbe
2011-07-04 19:54:23 UTC
view on stackexchange narkive permalink

Eine Ihrer Optionen ist die Verwendung von cl_predict aus dem clue -Paket (Hinweis: Ich habe dies durch Googeln von "kmeans R Predict" gefunden).

Der Link hat bei mir nicht funktioniert, stattdessen habe ich Folgendes verwendet: https://www.rdocumentation.org/packages/clue/versions/0.3-57/topics/cl_predict
#2
+5
Pablo Casas
2015-12-29 23:54:57 UTC
view on stackexchange narkive permalink

Überprüfen Sie diese vollständige Antwort. Der Code, den Sie benötigen, lautet:

  Cluster <-Funktion (x, Zentren) {# Berechnen Sie den euklidischen Quadratabstand von jeder Probe zu jedes Clusterzentrum tmp <-sapply (seq_len (nrow (x)), Funktion (i) gilt (Zentren, 1, Funktion (v) Summe ((x [i,] -v) ^ 2))) max.col ( -t (tmp)) # Index der minimalen Entfernung finden} # einen einfachen Datensatz mit zwei clustersset.seed (1) x <-rbind (Matrix (rnorm (100, sd = 0,3), ncol = 2), Matrix ( rnorm (100, Mittelwert = 1, sd = 0,3), ncol = 2)) colnames (x) <c ("x", "y") x_new <rbind (Matrix (rnorm (10, sd = 0,3)), ncol = 2), Matrix (rnorm (10, Mittelwert = 1, sd = 0,3), ncol = 2)) colnames (x_new) <c ("x", "y") cl <-kmeans (x, center = 2) all.equal (cl [["Cluster"]], Cluster (x, cl [["Zentren"]])) # [1] TRUEcluster (x_new, cl [["Zentren"]]) # [1] 2 2 2 2 2 1 1 1 1 1  
Es ist eine Weile her von meiner Antwort;Jetzt empfehle ich, ein Vorhersagemodell (wie die zufällige Gesamtstruktur) zu erstellen, wobei die Clustervariable als Ziel verwendet wird.Mit diesem Ansatz habe ich in der Praxis bessere Ergebnisse erzielt.Beispielsweise sind beim Clustering alle Variablen gleich wichtig, während das Vorhersagemodell automatisch diejenigen auswählen kann, die die Vorhersage des Clusters maximieren.Dieser Ansatz ist auch mit der Bereitstellung in der Produktion kompatibel (d. H. Vorhersagen, zu welchem Cluster der Fall gehört).
#3
+3
Augusto
2015-11-28 00:45:24 UTC
view on stackexchange narkive permalink

Eine weitere Option ist die Verwendung der Vorhersagemethode aus dem Paket flexclust, nachdem Sie Ihr Modell stats :: kmeans in seinen Typ kcca konvertiert haben.

#4
+1
Russ Hyde
2018-10-11 16:42:14 UTC
view on stackexchange narkive permalink

Als S3-Methode, die die Quadratsumme minimiert.Wird wie bei anderen Vorhersagen -Funktionen verwendet (newdata sollte mit der Struktur Ihrer Eingabe in kmeans übereinstimmen) und mit Methodenargumenten wie bei fitted.kmeans

  prognostizieren.kmeans <- Funktion (Objekt,
                           neue Daten,
                           Methode = c ("Zentren", "Klassen")) {
  Methode <- match.arg (Methode)

  Zentren <- Objekt $ Zentren
  ss_by_center <- apply (Zentren, 1, Funktion (x) {
    colSums ((t (newdata) - x) ^ 2)
  })
  best_clusters <- apply (ss_by_center, 1, which.min)

  if (Methode == "Zentren") {
    Zentren [best_clusters,]
  } else {
    best_clusters
  }}
}}
 

Ich wünschte, im vorhandenen Namespace stats wäre ein Predict.kmeans vorhanden.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...