绘制 jaccard 相似度的热图

Plot heatmap of jaccard similarity

考虑此处所示的数据框。

import pandas as pd
data= [
    {'col1':'101', 'col2': '101', 'col3':'1321'},
    {'col1':'99', 'col2': '99', 'col3':'101'},
    {'col1':'21', 'col2': '23', 'col3':'99'},
    {'col1':'47', 'col2': '67', 'col3':'47'},
    {'col1':'1321', 'col2': '47', 'col3':'23'}
           ]
df = pd.DataFrame(data)

如何计算每列之间的 Jaccard 相似度,然后将其绘制在热图上?

这样做似乎不太对。

df111 = df.to_numpy()
res = 1 - pdist(df111, 'jaccard')

我能够从另一个线程找到确切的解决方案。

发布该线程的解决方案。归功于 ayhan

from sklearn.metrics.pairwise import pairwise_distances
import seaborn as sns

jac_sim = 1 - pairwise_distances(plot_df1.T, metric = "hamming")
jac_sim = pd.DataFrame(jac_sim, index=plot_df1.columns, columns=plot_df1.columns)
sns.heatmap(jac_sim)