Soru:
Yeni bir nesnenin kümesini k ortalamayla tahmin etme
user333
2011-07-04 19:32:46 UTC
view on stackexchange narkive permalink

Eğitim veri kümemi kmenas işlevini kullanarak kümeye sığdırmak için kullandım

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

Nasıl yapabilirim yeni bir veri kümesindeki küme üyeliğini tahmin etmek için fit nesnesini mi kullanacaksınız?

Teşekkürler

Dört yanıtlar:
#1
+16
Nick Sabbe
2011-07-04 19:54:23 UTC
view on stackexchange narkive permalink

Seçeneklerinizden biri, ipucu paketinden cl_predict kullanmaktır (not: Bunu googling "kmeans R tahmin" yoluyla buldum).

Bağlantı benim için çalışmadı, bunun yerine şunu kullandım: 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

Bu tam yanıtı kontrol edin. İhtiyacınız olan kod şudur:

  cluster <- fonksiyonu (x, merkezler) {# her örnekten öklid mesafesinin karesi hesaplayın her bir küme merkezi tmp <- sapply (seq_len (nrow (x)), function (i) apply (center, 1, function (v) sum ((x [i,] -v) ^ 2))) max.col ( -t (tmp)) # min mesafe indeksini bul} # iki clusterset.seed (1) x <- rbind (matris (rnorm (100, sd = 0.3), ncol = 2), matris ( rnorm (100, ortalama = 1, sd = 0.3), ncol = 2)) sütun adları (x) <- c ("x", "y") x_new <-rbind (matris (rnorm (10, sd = 0.3), ncol = 2), matris (rnorm (10, ortalama = 1, sd = 0.3), ncol = 2)) sütun adları (x_new) <- c ("x", "y") cl <- kmeans (x, merkezler = 2) all.equal (cl [["küme"]], kümeler (x, cl [["merkezler"]])) # [1] DOĞRU kümeler (x_new, cl [["merkezler"]]) # [1] 2 2 2 2 2 1 1 1 1 1  
Cevabım üzerinden bir süre geçti;şimdi hedef olarak küme değişkenini kullanarak tahmini bir model (rastgele orman gibi) oluşturmanızı tavsiye ederim.Bu yaklaşımla pratikte daha iyi sonuçlar aldım.Örneğin, kümelemede tüm değişkenler eşit derecede önemlidir, oysa tahmine dayalı model kümenin tahminini en üst düzeye çıkaranları otomatik olarak seçebilir.Bu yaklaşım aynı zamanda üretimdeki dağıtımla da uyumludur (yani vakanın hangi kümeye ait olduğunu tahmin etme).
#3
+3
Augusto
2015-11-28 00:45:24 UTC
view on stackexchange narkive permalink

Diğer bir seçenek de stats :: kmeans modelinizi kcca türüne dönüştürdükten sonra flexclust paketindeki tahmin yöntemini kullanmaktır.

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

Karelerin toplamını en aza indiren bir S3 yöntemi olarak.Diğer tahmin işlevlerinde olduğu gibi (yeni veriler, girdinizin yapısıyla kmeans ile eşleşmelidir) ve fitted.kmeans

için olduğu gibi çalışan yöntem bağımsız değişkeniyle kullanılır
  tahmin.kmeans <- function (nesne,
                           yeni veri,
                           method = c ("merkezler", "sınıflar")) {
  yöntem <- match.arg (yöntem)

  merkezleri <- nesne $ merkezleri
  ss_by_center <- uygulamak (merkezler, 1, işlev (x) {
    colSums ((t (yeniveri) - x) ^ 2)
  })
  best_clusters <- uygula (ss_by_center, 1, which.min)

  if (yöntem == "merkezler") {
    merkezler [en iyi kümeler]
  } Başka {
    best_clusters
  }
}
 

Keşke mevcut istatistik ad alanında bir tahmin.kmeans olsaydı.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...