通常、樹状図とヒートマップを行うときは、距離行列を使用してSciPy
の束をします。私はSeaborn
を試してみたいが、Seaborn
は私のデータが矩形であることを望んでいる(rows = samples、cols =属性、距離行列ではない)?sns.clustermapにあらかじめ計算された距離行列を与える方法は?
バックグラウンドとして本質的にseaborn
を使用して、私の樹状図を計算し、それをヒートマップに貼り付けたいとします。これは可能ですか?そうでない場合は、これを将来の機能にすることができます。
調整可能なパラメータがありますので、長方形のマトリックスの代わりに距離のマトリックスを使うことができますか?ここで
は、使用です:
seaborn.clustermap¶
seaborn.clustermap(data, pivot_kws=None, method='average', metric='euclidean',
z_score=None, standard_scale=None, figsize=None, cbar_kws=None, row_cluster=True,
col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None,
col_colors=None, mask=None, **kwargs)
以下
私のコード:
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target
DF = pd.DataFrame(X, index = ["iris_%d" % (i) for i in range(X.shape[0])], columns = iris.feature_names)
私は私の方法は下記正しいとは思わないので、私はそれを事前に計算を与えていますそれが要求する矩形データ行列ではありません。相関/距離マトリックスをclustermap
と一緒に使用する方法の例はありませんが、https://stanford.edu/~mwaskom/software/seaborn/examples/network_correlations.htmlがありますが、順序はフラットsns.heatmap
funcでクラスター化されていません。
DF_corr = DF.T.corr()
DF_dism = 1 - DF_corr
sns.clustermap(DF_dism)
私はこの質問を理解していません。 2番目の行列は正方形ではありませんか? – mwaskom
さて、2番目は正方形ですが、それはb/cです。距離行列(1相関)を与えました。一方、 'sns.cluster_map'は長方形のデータ行列を必要とします。だから、基本的に私の冗長な距離行列を取り、生の値として扱い、それからリンケージをしました。それは数学的に働くのでしょうか?入力は矩形のデータ行列を必要とするので、意味をなさないと思われ、特定のステップが繰り返されていると思います。 –
私はあなたが知りたいことをより明確にするために質問を編集する必要があると思います。書かれているように、正方行列を作る方法を尋ねていて、正方行列であるプロットを表示しています。 – mwaskom