私は3つの行列を比較します。それぞれ5x6です。もともと、階層的クラスタリングを使用して行列をクラスタリングし、最も類似した行列をグループ化し、類似性の閾値を与えたいと考えました。デンドログラムまたは他のプロットからの距離行列
私はPythonでそのような機能を見つけることができませんでしたので、私は距離測定を手で実装しました。(p-norm where p=2)。今私は3x3の距離行列を持っています(私はこれも類似行列です)。
私は今、樹状図を作成しようとしています。これは私のコードであり、これは間違っています。 I は、が最も類似したマトリックスのクラスターを示すグラフ(可能であれば樹形図)を生成したい。行列0,1,2の0と2は同じであり、最初に一緒にクラスター化され、1が異なる必要があります。
> 0 1 2
0 0.0 2.0 3.85e-16
1 2.0 0.0 2.0
2 3.85e-16 2.0 0.0
コード::これは出力され
from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt
import numpy as np
from scipy.cluster.hierarchy import linkage
mat = np.array([[0.0, 2.0, 3.8459253727671276e-16], [2.0, 0.0, 2.0], [3.8459253727671276e-16, 2.0, 0.0]])
dist_mat = mat
linkage_matrix = linkage(dist_mat, "single")
dendrogram(linkage_matrix, color_threshold=1, labels=["0", "1", "2"],show_leaf_counts=True)
plt.title=("test")
plt.show()
リンケージ(dist_matの意味とは何か、「単一
は距離行列は次のようになります')?私は出力グラフを、距離が0と1の間の2.0(たとえば)のようなものに見えると仮定しました。
これらのデータをより適切に表現する方法はありますか?点の代わりにいくつかの行列をとり、距離行列を比較して形成し、その後にクラスター化する関数がありますか?私は、これらの行列の違いを視覚化する方法について、他の提案をしています。
これは正しいように思える、それは最初のクラス0と2をグループ化し、それらの両方が1でグループ化されていることを意味高さは距離であり、(0,2)のクラスターは約3.4の距離を持っているので、すべてが正常に動作しています – JeD
@JeD - ありがとうございます。点の代わりにいくつかの行列をとり、距離行列を比較して形成し、その後にクラスター化する関数がありますか? – amc