所有记录的Python sklearn余弦相似度循环

Posted

技术标签:

【中文标题】所有记录的Python sklearn余弦相似度循环【英文标题】:Python sklearn cosine-similarity loop for all records 【发布时间】:2020-10-25 00:10:18 【问题描述】:

我有名为 df 的数据框。 我正在使用下面的代码来获取每一行的余弦相似度:

vectorizer = CountVectorizer()
features = vectorizer.fit_transform(df['name']).todense()
for f in features:
    for index, row in df.iterrows():
        df['index'+str(index)] = pd.DataFrame(cosine_similarity(features,f))
df

但输出 DataFrame 对我假设它引用最后一条记录的每条记录显示相同的结果:

   name                                   index0     index1    index2     index3       index4
0   aaaabbbbbbcccc                     0.158114  0.158114   0.158114    0.158114    0.158114
1   ddddffffffgggg                     0.204124  0.204124   0.204124    0.204124    0.204124
2   hhhhhhiiiiiijjjjj                  0.158114  0.158114   0.158114    0.158114    0.158114
3   kkkkkklllllllmmmm                  0.235702  0.235702   0.235702    0.235702    0.235702
4   mmmmmnnnnnnooooooo                 1.000000  1.000000   1.000000    1.000000    1.000000

我想要所有记录的输出

【问题讨论】:

【参考方案1】:

您只需要IIUC:

for i, f in enumerate(features):
    address['index'+str(i)] = pd.DataFrame(cosine_similarity(features,f))
address

【讨论】:

以上是关于所有记录的Python sklearn余弦相似度循环的主要内容,如果未能解决你的问题,请参考以下文章

Scipy余弦相似度与sklearn余弦相似度

如何在 Python 中快速计算大量向量的余弦相似度?

使用 sklearn 如何计算文档和查询之间的 tf-idf 余弦相似度?

在 python 中的 sklearn 中绘制 DBSCAN 中的特定点

余弦相似度和余弦距离之间的差异

“余弦”度量在 sklearn 聚类算法中如何工作?