簡體   English   中英

聚類函數R Hclust Loop和開發表

[英]Clustering function R Hclust Loop and develop a table

我正在做一個文本挖掘/集群項目,正在嘗試創建一個表,其中包含簇的行數和6列,分別代表以下6個指標:最大直徑,最小分隔,平均值,在中間,平均值之間,平均寬度,鄧恩

我需要為3種方法創建表-kmeans,pam和hclust。

我能夠為kmeans創造一些東西

dtm0.90Dist = dist(dtm0.90)

foreachcluster = function(k) { 
  kmeans.result = kmeans(dtm0.90, k);
  kmeans.stats = cluster.stats(dtm0.90Dist,kmeans.result$cluster); 
                              c(kmeans.stats$min.separation, kmeans.stats$max.diameter,
                               kmeans.stats$average.within, kmeans.stats$avearge.between,
                               kmeans.stats$avg.silwidth, kmeans.stats$dunn) 
}
rbind(foreachcluster(2), foreachcluster(3), foreachcluster(4), foreachcluster(5),
      foreachcluster(6), foreachcluster(7),foreachcluster(8))

我得到以下輸出

       [,1]     [,2]     [,3]      [,4]       [,5]
[1,] 3.162278 30.19934 5.831550 0.5403872 0.10471348
[2,] 2.236068 28.37252 5.006058 0.3923446 0.07881104
[3,] 1.000000 28.37252 4.995478 0.2496066 0.03524537
[4,] 1.000000 26.40076 4.387212 0.2633338 0.03787770
[5,] 1.000000 26.40076 4.353248 0.2681947 0.03787770
[6,] 1.000000 26.40076 4.163757 0.1633954 0.03787770
[7,] 1.000000 26.40076 4.128927 0.2676423 0.03787770

對於hclust和pam方法,我需要類似的輸出,但是對於我的生命來說,對於兩種方法中的任何一種,都無法獲得相同的功能來工作

好的,所以我可以將功能設為HCLUST

forhclust=function(k){dfDist = dist(dtm0.90);
                      hclust.result = hclust(dfDist);
                      hclust.cluster = (cutree(hclust.result, k));
                      cluster.stats(dfDist,hclust.cluster);c(cluster.stats$min.separation)}

但是我運行這個時出現錯誤

Error in cluster.stats$min.separation : 
  object of type 'closure' is not subsettable

我需要的是打印“最小分離”輸出。

在理解為什么我的方法失敗的過程中,我將非常感謝所有幫助和指導。

此外,是否有很好的資料來源可以逐步詳細說明這些方法的功能和應用?

謝謝

foreachcluster2 = function(k) { 
  hc = hclust(mDist, method = "ave")
  hresult = cutree(hc, k)
  h.stats = cluster.stats(mDist,hresult); 
  c( max.dia=h.stats$max.diameter, 
     min.sep=h.stats$min.separation,
     avg.wi=h.stats$average.within, 
     avg.bw=h.stats$average.between,
     silwidth=h.stats$avg.silwidth, 
     dunn=h.stats$dunn) 
}
t2 = rbind(foreachcluster2(2), foreachcluster2(3), foreachcluster2(4),     foreachcluster2(5),foreachcluster2(6),
       foreachcluster2(7), foreachcluster2(8), foreachcluster2(9), foreachcluster2(10), 
       foreachcluster2(11), foreachcluster2(12),foreachcluster2(13),foreachcluster2(14))
rownames(t2) = 2:14
t2

這應該工作。 對於pam():

pamC <- pam(x=m, k=2)
pamC
pamC$clustering

使用$ clustering代替$ cluster,其余的相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM