聚类函数R Hclust循环并生成一个表
我正在从事一个文本挖掘/集群项目,并试图创建一个表,其中包含集群的行数和代表以下6个指标的6列数: 最大直径,最小间距,平均内,平均间,平均底宽,dunn 我需要为3种方法创建表——kmeans、pam和hclust 我能够为kmeans创建一些东西聚类函数R Hclust循环并生成一个表,r,cluster-analysis,R,Cluster Analysis,我正在从事一个文本挖掘/集群项目,并试图创建一个表,其中包含集群的行数和代表以下6个指标的6列数: 最大直径,最小间距,平均内,平均间,平均底宽,dunn 我需要为3种方法创建表——kmeans、pam和hclust 我能够为kmeans创建一些东西 dtm0.90Dist = dist(dtm0.90) foreachcluster = function(k) { kmeans.result = kmeans(dtm0.90, k); kmeans.stats = cluster.
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
我需要的是它打印“最小分离”输出
我非常感谢所有帮助,也许还有一些指导,以了解我的方法在hclust失败的原因
此外,是否有一个好的来源可以详细地一步一步地解释这些方法的功能和应用
多谢各位
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
pamC <- pam(x=m, k=2)
pamC
pamC$clustering