我想使用 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)] = Truewith sns.axes_style("white"): f, ax = plt.subplots(figsize=(10, 5)) ax = sns.heatmap(df['Movements'], mask=mask, square=False)但是,我只能看到正方形的结果(即仅来自 的前 5 个元素list_2。我做错了什么吗(例如,考虑热图不是平方的)?有没有其他方法可以可视化不同大小列表之间的相似性?建议会很受欢迎。
1 回答

蓝山帝景
TA贡献1843条经验 获得超7个赞
你可以简单地做:
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])
添加回答
举报
0/150
提交
取消