# optimalleaforder
层次聚类的最优叶序
函数库: TyMachineLearning
# 语法
leafOrder = optimalleaforder(tree,D)
# 说明
leafOrder = optimalleaforder(tree,D)使用距离D返回层次聚类二叉树的最优叶排序。二叉树的最优叶排序通过翻转树枝而不划分簇来最大化相邻叶之间的相似度之和。
# 示例
层次聚类二叉树的最优叶排序
加载数据集。
using TyMachineLearning
using CSV
using DataFrames
file = joinpath(pkgdir(TyMachineLearning), "data/Cluster/optimalleaforder.csv")
X = CSV.read(file, DataFrame; header=false)
按照平均连接法进行链接。
method = "average"
tree = linkage(X, method)
9×4 Matrix{Float64}:
1.0 9.0 0.0601334 2.0
4.0 7.0 0.143659 2.0
8.0 10.0 0.176585 3.0
5.0 6.0 0.333277 2.0
0.0 3.0 0.342297 2.0
11.0 12.0 0.371373 5.0
14.0 15.0 0.601593 7.0
2.0 13.0 0.686123 3.0
16.0 17.0 0.807371 10.0
计算成对观测值之间的距离。
D = pdist(X)
45-element Vector{Float64}:
0.8180649273132298
1.054641525116473
0.3422966089519439
0.6680418388843621
⋮
0.8719431088092847
0.42880841619539134
0.42029325785693966
0.1674427149803777
计算二叉树的最优叶排序。
leafOrder = optimalleaforder(tree,D)
10-element Vector{Int64}:
1
4
9
10
⋮
8
3
7
6
# 输入参数
tree - 层次聚类二叉树
数值矩阵
层次聚类二叉树,指定为使用linkage函数生成的(m–1)×4矩阵,其中m是原始数据集中数据点的数量。
数据类型: Matrix
D - 两两距离
向量
计算欧氏距离。
数据类型: Vector
# 输出参数
leafOrder - 最优叶排序
向量
最佳叶序,返回长度为m的向量,其中m是叶数。leafOrder是向量1:m的排列,给出最优的叶排序。
数据类型: Vector
# 另请参阅
dendrogram | linkage | pdist