【问题标题】:Calculate cosine similarity for vectors between two pandas columns?计算两个熊猫列之间向量的余弦相似度?
【发布时间】:2019-12-27 04:09:37
【问题描述】:

我有以下 Pandas 数据框,需要逐行查找余弦相似度。但我的代码返回一个值矩阵。

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

df = pd.DataFrame({"a" : [[0.1, 0.2],[0.5,0.3,0.3],[0.5]], "b" : [[0.1,0.2],[0.2,0.3,0.4],[0.5]]})

cosine_similarity(df["a"].tolist(), df["b"].tolist())

我需要有一个额外的列和每行的余弦值的输出。

【问题讨论】:

    标签: python-3.x cosine-similarity


    【解决方案1】:

    如果您只想计算列a 和列b 的值之间每一行的余弦相似度,则使用cosine distance 并减去结果from 1 to get the cosine similarity 会更容易。

    from scipy.spatial.distance import cosine
    
    df['cosine'] = df.apply(lambda row: 1 - cosine(row['a'], row['b']), axis=1)
    df
    

    输出:

                     a                b    cosine
    0       [0.1, 0.2]       [0.1, 0.2]  1.000000
    1  [0.5, 0.3, 0.3]  [0.2, 0.3, 0.4]  0.877866
    2            [0.5]            [0.5]  1.000000
    
    

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 1970-01-01
      • 2021-07-19
      • 2017-09-07
      • 2015-07-21
      • 2010-10-05
      • 2016-03-06
      • 2018-12-02
      • 1970-01-01
      相关资源
      最近更新 更多