私はHierarchical Clustering
で実験しており、R
ではとても簡単ですhclust(as.dist(X),method="average")
です。私はPython
のメソッドを見つけました。それは、私の入力距離マトリックスで何が起こっているのかちょっと混乱していることを除いて、かなりシンプルです。階層的クラスタリングのための三角対正方距離行列Python?
私は、相違性マトリックスDF_dissm = 1 - DF_sim
に変換する類似性マトリックス(DF_c93tom
、より小さなテストバージョン、DF_sim
)を持っています。
linkage
の入力としてこれをscipy
から使用していますが、ドキュメントには四角形または三角形の行列が含まれています。私は、lower triangle
、upper triangle
、およびsquare matrix
を入力するための別のクラスタを取得します。どうしてこれなの?それはドキュメントの上三角形を望んでいますが、下三角形のクラスターは本当に似ています。
私の質問は、なぜすべてのクラスタが異なるのですか?どちらが正しいか?
このここlinkage
y : ndarray
A condensed or redundant distance matrix. A condensed distance matrix is a flat array containing the upper triangular of the distance matrix.
の入力距離行列のドキュメントであることは私のコードである:2D配列は、最初の引数として渡される
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
from scipy.cluster.hierarchy import dendrogram, linkage
%matplotlib inline
#Test Data
DF_sim = DF_c93tom.iloc[:10,:10] #Similarity Matrix
DF_sim.columns = DF_sim.index = range(10)
#print(DF_test)
# 0 1 2 3 4 5 6 7 8 9
# 0 1.000000 0 0.395833 0.083333 0 0 0 0 0 0
# 1 0.000000 1 0.000000 0.000000 0 0 0 0 0 0
# 2 0.395833 0 1.000000 0.883792 0 0 0 0 0 0
# 3 0.083333 0 0.883792 1.000000 0 0 0 0 0 0
# 4 0.000000 0 0.000000 0.000000 1 0 0 0 0 0
# 5 0.000000 0 0.000000 0.000000 0 1 0 0 0 0
# 6 0.000000 0 0.000000 0.000000 0 0 1 0 0 0
# 7 0.000000 0 0.000000 0.000000 0 0 0 1 0 0
# 8 0.000000 0 0.000000 0.000000 0 0 0 0 1 0
# 9 0.000000 0 0.000000 0.000000 0 0 0 0 0 1
#Dissimilarity Matrix
DF_dissm = 1 - DF_sim
#Redundant Matrix
#np.tril(DF_dissm).T == np.triu(DF_dissm)
#True for all values
#Hierarchical Clustering for square and triangle matrices
fig_1 = plt.figure(1)
plt.title("Square")
Z_square = linkage((DF_dissm.values),method="average")
dendrogram(Z_square)
fig_2 = plt.figure(2)
plt.title("Triangle Upper")
Z_triu = linkage(np.triu(DF_dissm.values),method="average")
dendrogram(Z_triu)
fig_3 = plt.figure(3)
plt.title("Triangle Lower")
Z_tril = linkage(np.tril(DF_dissm.values),method="average")
dendrogram(Z_tril)
plt.show()