"Agglomerate" (机器学习方法)
- 用于 FindClusters、ClusterClassify 和 ClusteringComponents 的方法.
- 使用凝聚层次聚类方法将数据划分为相似元素的簇.
详细信息和子选项
- "Agglomerate" 是一种层次聚类方法. 当集群具有相似的密度并且是各向同性时,"Agglomerate" 效果很好; 但是,当集群大小不同并且对相异函数的选择敏感时,则可能会失败.
- 下图显示了应用于玩具数据集的 "Agglomerate" 方法的结果:
-
- "Agglomerate" 构建聚类的层次结构. 在程序开始时,该方法将每个数据点分配给一个簇,然后迭代合并相似的簇,在每次迭代中,最相似的簇被合并. 当达到指定的簇数时,合并停止. 当未指定簇数时,当所有簇对都高于给定的相似性阈值时,合并停止.
- 可以给出以下子选项:
-
ClusterDissimilarityFunction "Single" 簇距离的链接 - 聚类差异由链接函数定义,可以由子选项 ClusterDissimilarityFunction 指定. ClusterDissimilarityFunction 的可能设置包括:
-
"Single" 簇最近点之间的距离 "Complete" 簇最远点之间的距离 "Average" 簇点之间的平均距离 "Centroid" 簇平均值之间的距离 "Median" 簇中位数之间的距离 "Ward" 簇点之间的平均平方距离 "WeightedAverage" 加权平均簇间差异 f 纯函数 - "Complete" 链接倾向于打破集群,这与 "Average"、"Centroid"、"Median" 和 "Ward"形成鲜明对比,后者往往会找到相对紧凑且距离较远的常规大小的集群.
范例
打开所有单元 关闭所有单元基本范例 (3)
FindClusters[{1, 2, 10, 12, 3, 1, 13, 25}, Method -> "Agglomerate"]使用 "Agglomerate" 聚类方法找到邻近值的四个簇:
FindClusters[{1, 2, 10, 12, 3, 1, 13, 25}, UpTo@4, Method -> "Agglomerate"]colors = RandomColor[100];
FindClusters[colors, Method -> "Agglomerate"]使用 "Agglomerate" 方法创建 ClassifierFunction 以识别两个图像簇:
images = {[image], [image], [image], [image], [image], [image], [image], [image], [image]};c = ClusterClassify[images, UpTo@2, Method -> "Agglomerate"]c[images]GatherBy[images, c]选项 (2)
"ClusterDissimilarityFunction" (2)
SeedRandom[1234];
ns = 100;
cov = {{.2, 0 }, {0 , .2}};
data = Join[
RandomVariate[MultinormalDistribution[{3, 1}, cov], ns],
RandomVariate[MultinormalDistribution[{1, 3}, cov], ns],
RandomVariate[MultinormalDistribution[{1, 1}, cov], ns],
RandomVariate[MultinormalDistribution[{3, 3}, cov], ns]
];使用不同的 ClusterDissimilarityFunction 获取邻近的簇:
Grid[{Table[ListPlot[FindClusters[data, UpTo@4, Method -> {"Agglomerate", ClusterDissimilarityFunction -> s}], PlotStyle -> PointSize[Medium]], {s, {"Single", "Complete", "Average", "Ward" }}]}, Frame -> All]使用 "Agglomerate" 方法获得颜色列表中的邻近簇:
colors = RandomColor[50];
FindClusters[colors, Method -> "Agglomerate"]table = Table[FindClusters[colors, Method -> {"Agglomerate", ClusterDissimilarityFunction -> p}], {p, {"Centroid", "Single", "Ward"}}];
Grid[{table}, Frame -> All]技术笔记
-
▪
- 把数据划分为聚类