[英]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.