python快速两两元素求相似矩阵

news2025/1/19 17:15:39

目录

  • 1. 计算相似度矩阵
  • 2. 基于sklearn

1. 计算相似度矩阵

计算相似度矩阵的方法有很多种,发现了sklearn中直接有通过计算余弦相似度得到相似度矩阵的方法
1 sklearn.metrics.pairwise.cosine_similarity # 余弦相似度
2 sklearn.metrics.pairwise.pairwise_distances #余弦距离

>>> from sklearn.metrics.pairwise import cosine_similarity
>>> from sklearn.metrics.pairwise import pairwise_distances

>>> a=[[1,3],[2,2]]
>>> cosine_similarity(a)
array([[ 1.        ,  0.89442719],
       [ 0.89442719,  1.        ]])

>>> pairwise_distances(a,metric="cosine")
array([[ 0.        ,  0.10557281],
       [ 0.10557281,  0.        ]])

pairwise_distances方法是 cosine_similarity减1后取绝对值得到的。

2. 基于sklearn

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

a1=np.arange(15).reshape(3, 5)
a2=np.arange(20).reshape(4, 5)

print(cosine_similarity(a1, a2))  # 第一行的值是a1中的第一个行向量与a2中所有的行向量之间的余弦相似度

print(cosine_similarity(a1))  # a1中的行向量之间的两两余弦相似度

a1 和 a2 介绍,a1 包含 3 个元素,a2 包含 4 个元素,

a1
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
a2
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
cosine_similarity(a1)  # 3 × 3
Out[3]: 
array([[1.        , 0.91465912, 0.87845859],
       [0.91465912, 1.        , 0.99663684],
       [0.87845859, 0.99663684, 1.        ]])
cosine_similarity(a1, a2)  # 3 × 4
Out[2]: 
array([[1.        , 0.91465912, 0.87845859, 0.86154979],
       [0.91465912, 1.        , 0.99663684, 0.99323905],
       [0.87845859, 0.99663684, 1.        , 0.9994114 ]])

cosine_similarity(a1) 将是 a1 的 3 个元素相互计算余弦相似度,而 cosine_similarity(a1,a2) 则是 a1 的 3 个元素和 a2 的 4 个元素相互进行余弦相似度计算。
在这里插入图片描述

[1] 在 numpy 中,对数组或矩阵中的每个元素,进行函数计算 2019.12;
[2] python计算相似矩阵 2018.6;
[3] python向量之间相似性的计算方法(持续更新中)2019.1;
[4] Python 使用sklearn计算余弦相似度 2020.9;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NetCore】09-中间件

文章目录 中间件:掌控请求处理过程的关键1. 中间件1.1 中间件工作原理1.2 中间件核心对象 2.异常处理中间件:区分真异常和逻辑异常2.1 处理异常的方式2.1.1 日常错误处理--定义错误页的方法2.1.2 使用代理方法处理异常2.1.3 异常过滤器 IExceptionFilter2.1.4 特性过…

NTN(六) switchover

NTN中的switchover包括feeder link switchover和 serving link switch。所谓feeder link switchover就是将feeder link从source NTN 网关更改为特定 NTN payload的target NTN 网关的过程。 feeder link switchover是网络层过程。 而service link switch则是指serving NTN paylo…

OpenCV分析tfboys十周年演唱会灯牌大战结果

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。本文是音视频系…

【代码质量】认知复杂度(COGNITIVE COMPLEXITY)一种衡量可理解性的新方法

白皮书地址 摘要:圈复杂度最初是作为“可测试性和模块控制流的“可维护性”。虽然它擅长于衡量前者,但它的数学模型不能产生一个令人满意的值来衡量后者。本文描述一种打破数学度量模型的新度量模型来评估代码,以弥补圈复杂度的缺点&#xf…

【科研论文配图绘制】task1 掌握科研绘图的基本知识

【科研论文配图绘制】task1 掌握科研绘图的基本知识 写在最前 8月份Datawhale组队学习,写下该博客记录学习内容 1.科研论文配图的分类与构成 2.科研论文配图的格式和尺寸 3.科研论文配图中的字体和字号设置 4.科研论文配图的版式设计、结构布局和颜色搭配 占个…

【校招VIP】CSS校招考点之选择器优先级

考点介绍: 选择器是CSS的基础,也是校招中的高频考点,特别是复合选择器的执行优先级,同时也是实战中样式不生效的跟踪依据。 因为选择器的种类较多,很难直接记忆,可以考虑选择一个相对值,比如id类…

day4 IO模型

IO多路复用 1.select函数 服务器: 客户端 poll函数 客户端:

《Java-SE-第三十八章》之注解

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

每日记--前端解决方案--el-select下拉样式-el-option内容过长-鼠标悬停到文字不修改光标样式-设置透明

文章目录 el-select下拉样式el-select中el-option内容过长解决办法鼠标悬停到文字不修改光标样式设置透明 el-select下拉样式 element-ui自带样式设置popper-class el-select中el-option内容过长解决办法 问题:像这样选项太长了,不好看 解决&#xf…

关于Linux文件系统只读问题的修改笔记

1.问题 2. 原因 系统异常关机或者代码修改错误导致硬盘挂载出现问题开启只读模式,但是重启有时候可以解决。 3.解决方法 1. mount查看那个挂载的硬盘出现问题(ro标识只读) mount | grep ro2.找到硬盘,重新挂载即可 sudo mount -o remount,rw /sys/f…

半导体市场震荡,硅晶圆价格下修成焦点 | 百能云芯

半导体市场状况不容乐观,原本被半导体晶圆制造厂视为稳定业绩的长期合同开始面临松动。行业内传出,国内重要的晶圆代工大厂已向日本硅晶圆供应商提出要求降低明年合同价格的请求,以共同应对困境,双方目前正处于激烈的博弈中。鉴于…

测试相关Liunx基础知识

Linux的历史和安装 基本常识 Liunx目录结果 常见

1€滤波器(1 Euro Filter)使用介绍

怎么调整欧拉角x、y、z的抖动问题?

python+django+mysql项目实践四(信息修改+用户登陆)

python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 用户信息修改 修改用户信息需要显示原内容,进行修改 通过url传递编号 urls views 修改内容需要用数据库的更新,用update进行更新,用filter进行选择 输入参数多nid,传递要修…

数据结构--有向⽆环图 描述表达式

数据结构–有向⽆环图 描述表达式 有向⽆环图 \color{red}有向⽆环图 有向⽆环图:若⼀个有向图中 不存在环 \color{red}不存在环 不存在环,则称为有向⽆环图,简称 D A G 图 \color{red}DAG图 DAG图(Directed Acyclic Graph&#x…

2021年09月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:字符统计 给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。 输入 输入包含一行,一个字符串,长度不超过1000。 输出 输出一行,包括出现次数最多的字符和该字符出现的次数,中间以…

autodock后的pdbqt文件怎么通过网站分析?

首先需要在pymol中打开这个docking后的分子 然后再打开受体, 注意:顺序不要反,顺序反了会导致网址分析错误 最后导出为pdb就可以了放在网站上用了 网址:https://plip-tool.biotec.tu-dresden.de/plip-web/plip/index

RK3568KK操作手册

一.烧录MCU 板子不用上电,接上烧录器 打开 HOPE3000 For e-Link 烧录软件。选择文件,选择要烧录的固件:HT66F2030.MTP 选择3V 点击下载, 点击所有 烧录成功如图所示: 二.接上电源&am…

什么是自动化测试?如何做自动化测试?

前面介绍了功能测试和接口测试,在介绍接口测试时提到了实现API自动化。那具体什么是自动化,为什么要做自动化,这里我们集中总结。 一. 什么是自动化? 顾名思义,自动化测试是相对人工测试而言的,它是指把人…

易云维®医院后勤一站式服务平台实现对医院人、物、设备进行信息化管理

传统后勤移动系统的缺陷 使用的门槛和成本高。在国内只有一些大医院开展及应用,由于传统移动运维系统需要定制软件、结合专用平板使用,导致整体项目价格昂贵,故一般采购医院配置的平板少,从而影响记录实时互动追踪的效果&#xf…