ジュリアで階層的クラスタリングを行う方法
説明
Clustering.jl
パッケージの hclust()
関数を使えばいい。
hclust(d::AbstractMatrix; [linkage], [uplo], [branchorder])
距離行列 を入力として受け取り、階層的クラスタリング の結果を返す。クラスタ間の距離のデフォルトは 単一連結 だ。
デンドログラム を描くには、Plots.jl
ではなく StatsPlots.jl
を使わなければならない。
コード
using StatsPlots
using Clustering
using Distances
using Distributions
a = rand(Uniform(-1,1), 2, 25)
scatt = scatter(a[1,:], a[2,:], label=false)
savefig(scatt, "julia_hclust_scatter.png")
D_a = pairwise(Euclidean(), a, a)
SL = hclust(D_a, linkage=:single)
plot_SL = plot(SL)
p = plot(scatt, plot_SL, size=(800,400))
savefig(p, "julia_hclust.png")