什么是 scipy 集群层次?如何将层次聚类转换为平面聚类?
scipy.cluster.hierarchy 模块提供了分层聚类及其类型的函数,例如凝聚聚类。它有各种程序,我们可以用这些程序来 −
将分层聚类转换为平面聚类。
实现凝聚聚类。
在层次结构上计算统计数据
将平面聚类可视化。
检查两个平面集群分配的同构性。
绘制集群。
程序 scipy.cluster.hierarchy.fcluster 用于将分层聚类剪切为平面聚类,它们作为结果获取原始数据点分配到单个集群。让我们借助以下示例来理解这个概念 −
示例
#Importing the packages from scipy.cluster.hierarchy import ward, fcluster from scipy.spatial.distance import pdist #The cluster linkage method i.e., scipy.cluster.hierarchy.ward will generate a linkage matrix as their output: A = [ [0, 0], [0, 1], [1, 0], [0, 3], [0, 2], [1, 4], [3, 0], [2, 0], [4, 1], [3, 3], [2, 3], [4, 3] ] X = ward(pdist(A)) print(X)
输出:
[[ 0. 1. 1. 2. ] [ 2. 7. 1. 2. ] [ 3. 4. 1. 2. ] [ 9. 10. 1. 2. ] [ 6. 8. 1.41421356 2. ] [11. 15. 1.73205081 3. ] [ 5. 14. 2.081666 3. ] [12. 13. 2.23606798 4. ] [16. 17. 3.94968353 5. ] [18. 19. 5.15012714 7. ] [20. 21. 6.4968857 12. ]]
以上输出中接收的矩阵 X 表示树状图。在这个树状图中,第一个和第二个元素是每一步合并的两个集群。这些集群之间的距离由上述树状图的第三个元素给出。第四个元素提供了新集群的大小。
#Flatting the dendrogram by using fcluster() where the assignation of the original data points to single clusters mostly depend on the distance threshold t. fcluster(X, t=1.5, criterion='distance') #when t= 1.5
输出:
array([6, 6, 7, 4, 4, 5, 1, 7, 1, 2, 2, 3], dtype=int32)
示例
fcluster(X, t=0.9, criterion='distance') #when t= 0.9
输出:
array([ 9, 10, 11, 6, 7, 8, 1, 12, 2, 3, 4, 5], dtype=int32)
示例
fcluster(X, t=9, criterion='distance') #when t= 9
输出:
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)
广告