使用不同大小列表的热图

我想使用 JaroWinkler 相似性比较两个不同大小的列表。List_1有5元素,它来自列数据框,例如


List_1=df['Movements'].tolist()

IEList_1=['surrealism', 'futurism', 'impressionism', 'realism', 'neorealism']


whilelist_2有7元素:


list_2=['romantisme', 'surrealisme', 'realisme','creativité', 'liberté', 'poete','cubism','metaphysique'] 

为了计算 JaroWinkler 距离,我使用了以下函数:


jarowinkler = JaroWinkler()

df.Movements我按如下方式应用于该列:


for m in all_mov:

     df[m] = df.Movements.apply(lambda x: jarowinkler.similarity(x, m))

    np.where(df[m] > 0.1, df[m], np.nan)

我只想使用seaborn热图绘制jarowinkler.similarity大于的结果0.1。


mask = np.zeros_like(df.Movements)

mask[np.triu_indices_from(mask)] = True

with sns.axes_style("white"):

    f, ax = plt.subplots(figsize=(10, 5))

    ax = sns.heatmap(df['Movements'], mask=mask, square=False)

但是,我只能看到正方形的结果(即仅来自 的前 5 个元素list_2。我做错了什么吗(例如,考虑热图不是平方的)?有没有其他方法可以可视化不同大小列表之间的相似性?建议会很受欢迎。


湖上湖
浏览 62回答 1
1回答

蓝山帝景

你可以简单地做:for m in all_mov:    #compute similarity    df[m] = df.Movements.apply(lambda x: jarowinkler.similarity(x, m))    # filter out low similarity scores    df[m] = np.where(df[m] > 0.1, df[m], np.nan)sns.heatmap(data=df.set_index('Movements')[all_mov])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python