使用 plot(hclust(dist(x)))
方法,我能够绘制一个簇树图。有用。但是我想获得所有集群的列表,而不是树图,因为我有大量数据(如 150K 节点)并且情节变得困惑。
换句话说,如果 a b c
是一个簇,如果 d e f g
是一个集群然后我想得到这样的东西:
1 a,b,c
2 d,e,f,g
请注意,这并不是我想要的“输出”。这只是一个例子。我只是希望能够得到一个簇列表而不是树图它可以是向量、矩阵或只是简单的数字,显示元素属于哪些组。
这怎么可能?
最佳答案
我将使用 R 中可用的数据集来演示如何将树切割成所需数量的部分。结果是一张 table 。
构造一个 hclust 对象。
hc <- hclust(dist(USArrests), "ave")
#plot(hc)
您现在可以根据需要将树切成任意数量的 Twig 。对于我的下一个技巧,我将把树分成两组。您可以使用
k
设置切割次数范围。见 ?cutree
以及参数的使用 h
这可能对您更有用(请参阅 cutree(hc, k = 2) == cutree(hc, h = 110)
)。cutree(hc, k = 2)
Alabama Alaska Arizona Arkansas California
1 1 1 2 1
Colorado Connecticut Delaware Florida Georgia
2 2 1 1 2
Hawaii Idaho Illinois Indiana Iowa
2 2 1 2 2
Kansas Kentucky Louisiana Maine Maryland
2 2 1 2 1
Massachusetts Michigan Minnesota Mississippi Missouri
2 1 2 1 2
Montana Nebraska Nevada New Hampshire New Jersey
2 2 1 2 2
New Mexico New York North Carolina North Dakota Ohio
1 1 1 2 2
Oklahoma Oregon Pennsylvania Rhode Island South Carolina
2 2 2 2 1
South Dakota Tennessee Texas Utah Vermont
2 2 2 2 2
Virginia Washington West Virginia Wisconsin Wyoming
2 2 2 2 2
关于r - hclust 函数的聚类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6518133/