首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python上使用cosine_similarity函数

在Python上使用cosine_similarity函数
EN

Stack Overflow用户
提问于 2022-05-02 08:43:21
回答 1查看 158关注 0票数 1
代码语言:javascript
复制
import numpy as np
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

a = np.array([[3,4],[2,5],[1,2],[1,2],[4,5]])

ap = pd.DataFrame(a, index=['Sonata','Etudes','Waltzes','Nocturnes','Marches'],columns=['search_history','view_count'])
ap

代码语言:javascript
复制
b = np.array([[4,4],[3,5],[2,1],[4,7],[1,2]])
bp = pd.DataFrame(b, index=['Sonata','Etudes','Waltzes','Nocturnes','Marches'],columns=['comment + wishlist ',' signup'])
bp

然后我cosine_similarity函数,

代码语言:javascript
复制
from sklearn.metrics.pairwise import cosine_similarity
pd.DataFrame(cosine_similarity(a, b),columns=['A','B'], index=['Sonata','Etudes','Waltzes','Nocturnes','Marches'])

这意味着:

代码语言:javascript
复制
ValueError: Shape of passed values is (5, 5), indices imply (5, 2)

所以如果我像这样改变,

代码语言:javascript
复制
from sklearn.metrics.pairwise import cosine_similarity
pd.DataFrame(cosine_similarity(a, b),columns=['A','B','c','d','e'], index=['Sonata','Etudes','Waltzes','Nocturnes','Marches'])

这个结果被淘汰了。

这不是我想的结果。与dataFrames a和b一样,我希望在5行和2列中显示结果,但我们总是在5行和5列中获得结果。

我该怎么办?

预期结果是

代码语言:javascript
复制
           A            B   
Sonata     0.989949     0.994692    
Etudes      0.919145    0.987241    
Waltzes     0.948683    0.997054    
Nocturnes   0.948683    0.997054    
Marches    0.993884     0.990992    

像这样

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-02 10:20:31

cosine_similarity()将比较数组中的每个值和第二个数组中的所有值,即5 * 5操作和结果。您只需要前两列,这样就可以将结果DataFrame切片

代码语言:javascript
复制
df = pd.DataFrame(cosine_similarity(a, b), columns=['A', 'B', 'C', 'D', 'E'], index=['Sonata', 'Etudes', 'Waltzes', 'Nocturnes', 'Marches'])
print(df[['A', 'B']]) # by columns names
# or
print(df.iloc[:, 0:2]) # by columns indices

输出

代码语言:javascript
复制
                  A         B
Sonata     0.989949  0.994692
Etudes     0.919145  0.987241
Waltzes    0.948683  0.997054
Nocturnes  0.948683  0.997054
Marches    0.993884  0.990992
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72084283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档