Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用每行与向量之间的余弦距离创建数据框列

使用每行与向量之间的余弦距离创建数据框列
EN

Stack Overflow用户
提问于 2019-09-12 15:35:22
回答 1查看 646关注 0票数 0

我有以下数据帧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
file_1  0.797647  ...  0.000000
file_2  0.000000  ...  0.000000
file_3  0.000000  ...  0.000000

让我们称它为df。每一行都有一个索引(file_x)和4096列(没有名称)。

我还有一个大小为4096的向量(称为test_file),我想为它计算与df中的每一行的余弦相似度。其基本思想是将结果追加到一个新列中,我可以对该列进行排序,以获得最佳的5个结果。

到目前为止,我一直使用iterrows()在向量和每一行之间执行cosine_similarity度量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for index, row in df.iterrows():
    cos_sim = cosine_similarity(row.values.reshape(1, -1), test_file)

但是对于性能问题,我更喜欢使用更适合于矩阵计算的pandas或numpy方法。

我正在研究使用lambda函数的.apply().assign()方法,但我不知道如何继续(所有示例都使用了我没有的命名列)。

我想做一些像这样的事情

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.assign(cos_sim = cosine_similarity(df[:], test_file))

但是如何让当前行对其进行相似度运算呢?

我还使用df["cos_dist"] = cdist(np.stack(df.vector), test_file, metric="cosine")之类的东西研究了scipy库中的cdist,但我不知道如何保留原始数据帧中的索引信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-12 19:14:25

不需要apply,只需让sklearn在整个数组上进行计算即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df['cos_sim'] = cosine_similarity(df, test_file).reshape(-1)

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd, numpy as np
from sklearn.metrics.pairwise import cosine_similarity

n,m = 4,3
np.random.seed(0)
df = pd.DataFrame(np.random.randn(m,n), index=['file_{}'.format(i) for i in range(1,m+1)])
test_file = np.random.randn(1,n)

df['cos_sim'] = cosine_similarity(df, test_file).reshape(-1)
print(df)

#               0         1         2         3   cos_sim
#file_1  1.764052  0.400157  0.978738  2.240893  0.890653
#file_2  1.867558 -0.977278  0.950088 -0.151357  0.760393
#file_3 -0.103219  0.410599  0.144044  1.454274  0.360205
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57910151

复制
相关文章
[文本语义相似] 基于bow的余弦距离
文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像 对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍 基于bow的余弦距离计算相似度。
MachineLP
2020/05/04
7430
读取文档数据的各列的每行中
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117322.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
2K0
[文本语义相似] 基于tf-idf的余弦距离
文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像 对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍 基于tf-idf的余弦距离计算相似度。
MachineLP
2020/05/04
6200
欧氏距离和余弦相似度
最近在做以图搜图的功能,在评价两个图像相似性时候,尝试了这两种指标,两者有相同的地方,就是在机器学习中都可以用来计算相似度,但是两者的含义有很大差别,以我的理解就是:
用户3578099
2019/08/15
4.1K0
余弦相似度与欧氏距离相似度(比较记录)
余弦相似度衡量的是维度间取值方向的一致性,注重维度之间的差异,不注重数值上的差异,而欧氏度量的正是数值上的差异性。
海涛
2020/06/04
3.1K0
《模式识别与智能计算》夹角余弦距离分类
算法流程 计算待测样品与训练集里每个样品x的角度距离 角度距离最大的就是所属的样品类别 算法实现 计算夹角余弦 def anglecos(x_train,y_train,sample): """ :function 按照夹角余弦距离法计算待测样品与样品库中的相似度 :param x_train: 训练集 M*N M为样本个数 N为特征个数 :param y_train: 训练集标签 1*M :param sample: 待识别样品 :return: 返回判断
Max超
2020/01/16
6720
[文本语义相似] 基于ngram-tf-idf的余弦距离
文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像 对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍 基于ngram-tf-idf的余弦距离计算相似度。
MachineLP
2020/05/01
7030
距离度量 —— 余弦相似度(Cosine similarity)
三角函数,相信大家在初高中都已经学过,而这里所说的余弦相似度(Cosine Distance)的计算公式和高中学到过的公式差不多。
繁依Fanyi
2023/05/07
9.3K0
距离度量 —— 余弦相似度(Cosine similarity)
Excel与pandas:使用applymap()创建复杂的计算列
我们之前讨论了如何在pandas中创建计算列,并讲解了一些简单的示例。通过将表达式赋值给一个新列(例如df['new column']=expression),可以在大多数情况下轻松创建计算列。然而,有时我们需要创建相当复杂的计算列,这就是本文要讲解的内容。
fanjy
2022/11/16
3.9K0
Excel与pandas:使用applymap()创建复杂的计算列
使用OpenCV测量图像中物体之间的距离
本文来自光头哥哥的博客【Measuring distance between objects in an image with OpenCV】,仅做学习分享。
周旋
2022/08/07
2K0
使用OpenCV测量图像中物体之间的距离
不同品种猫猫有多相似呢,Python 文本相似度计算
最近碰到了文本相似度的问题,想到了猫猫数据中有品种的相关描述,于是用品种描述文本来研究一下文本相似度计算的。
用户6825444
2021/05/13
8740
不同品种猫猫有多相似呢,Python 文本相似度计算
使用OpenCV测量图像中物体之间的距离
本文来自光头哥哥的博客【Measuring distance between objects in an image with OpenCV】,仅做学习分享。
OpenCV学堂
2020/11/09
5K0
使用OpenCV测量图像中物体之间的距离
向量距离计算的几种方式
衡量两条向量之间的距离,可以将某一张图片通过特征提取来转换为一个特征向量。衡量两张图片的相似度就可以通过衡量这两张图片对应的两个特征向量之间的距离来判断了。
用户3578099
2023/09/01
1.1K0
向量距离计算的几种方式
关于《Python数据挖掘入门与实战》读书笔记三(估计器和近邻算法)
Scikit-learn库,实现了一系列数据挖掘算法,提供通用编程接口、标准化的测试和调参工具,便于用户尝试不同算法对其进行充分测试和查找优参数值。
python与大数据分析
2022/03/11
5010
关于《Python数据挖掘入门与实战》读书笔记三(估计器和近邻算法)
[文本语义相似] 基于bert的余弦距离(bert4keras实现)
文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像 对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍 基于bert的余弦距离计算相似度。
MachineLP
2020/05/08
1.3K0
[文本语义相似] 基于ngram-tf-idf的余弦距离(gensim实现)
文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像 对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍 基于bow的余弦距离计算相似度。
MachineLP
2020/05/08
5160
《模式识别与智能计算》二值化的夹角余弦距离法分类
算法流程 将样本库中的每个样本进行二值化,阈值为(最大值-最小值)/2 利用夹角余弦距离法对待测样品进行分类 算法实现 def erzhianglecos(x_train,y_train,sample): """ :function 按照二值夹角余弦距离法计算待测样品与样品库中的相似度 :param x_train: 训练集 M*N M为样本个数 N为特征个数 :param y_train: 训练集标签 1*M :param sample: 待识别样品 :r
Max超
2020/01/16
5170
向量数据库:使用Elasticsearch实现向量数据存储与搜索
[1] TOC: 向量数据库:使用Elasticsearch实现向量数据存储与搜索 [2] 向量检索: https://github.com/elastic/elasticsearch/blob/e8c382f89553e3a7aaafa88a5934288c1192acdc/docs/reference/vectors/vector-functions.asciidoc
马超的博客
2023/09/02
3.5K0
向量数据库:使用Elasticsearch实现向量数据存储与搜索
你与一份好简历之间的距离
每年年初都是企业的招聘旺季,对应的三四月份绝对跳槽、找工作的好时机,业内经常称呼这两个月为金三银四。实力雄厚的人,那个月找工作问题都不大,但是也会尽量挑选个好时机,能有更多的选择。
良月柒
2019/03/22
6880
你与一份好简历之间的距离
点击加载更多

相似问题

如何计算向量与R中每行数据帧之间的余弦相似度?

12

两个向量之间的软余弦距离(Python)

24

向量到矩阵的余弦距离

45

向量空间模型:余弦相似度与欧氏距离

40

计算Spark中两列之间的余弦距离

132
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文