聚类笔记/sklearn笔记:Affinity Propagation亲和力传播
1 算法原理
1.1 基本思想
- 将全部数据点都当作潜在的聚类中心(称之为 exemplar )
- 然后数据点两两之间连线构成一个网络( 相似度矩阵 )
- 再通过网络中各条边的消息( responsibility 和 availability )传递计算出各样本的聚类中心。

1.2 主要概念
| Examplar | 聚类中心 |
| similarity S(i,j) | 相似度 一般使用负的欧式距离,所以 S(i,j) 越大,表示两个点距离越近,相似度也就越高
|
| Preference |
|
| Responsibility 吸引度 |
|
| Availability 归属度 |
|
| Damping factor 阻尼系数 | 主要是起收敛作用 |
1.3 算法流程
- 计算相似度矩阵
- 此时对角线上的值都是0,用某种方法(固定参数/相似度矩阵的中位值/最小值等)填充对角线的值
- 开始时:构造一个全0的归属度矩阵a
- 以下不断迭代更新
- 更新每一个吸引度矩阵r中的单元格值
- 更新归属度矩阵a
- 使用阻尼系数更新归属度a和吸引度r
- 使用阻尼系数(damping factor)来衰减吸引度和归属度信息,以免在更新的过程中出现数值振荡

- 上面三个公式算出来的是等号右边的a和r
- 更新每一个吸引度矩阵r中的单元格值
- 获取聚类中心
1.4 举例
- 假设有如下样本:共5个维度
- 计算相似度矩阵
- 相似度矩阵中每个单元是用两个样本对应值的差的平方和取负值得到的,对角线上的除外

- 当聚类中心为对角线上的单元格选择了比较小的值,那么AP算法会快速收敛并得到少量的聚类中心,反之亦然。因此。我们使用表格中最小的值
-22去填充相似度矩阵中的0对角线单元格。
- 计算吸引度矩阵r

- eg:计算 Bob对 Alice的 吸引度(Responsibility)【Alice视Bob为聚类中心的程度,r(Alice,Bob)
- 这里套用上面的公式即为:用S(Bob,Alice)- max(a(Alice,others)+s(Alice,others))
- 即 -7-(-6)=-1

- 这里套用上面的公式即为:用S(Bob,Alice)- max(a(Alice,others)+s(Alice,others))
- 计算归属度矩阵a
- 以alice为例,a(Alice,Alice)就是 所有大于0的 r(others,Alice)的和,即10+11=21
- 以Alice支持Bob作为其聚类中心为例
- a(Alice,Bob)=min(0,r(Bob,Bob)+0)=-15 【没有r(others,Bob)大于0】

- 假设迭代一次就结束,那么我们计算评估矩阵
- c=r+a

- 一般将评估矩阵中取得最大值的一些点作为聚类中心
Alice,Bob 和 Cary共同组成一个聚类簇Doug 和 Edna则组成了第二个聚类
1.5 主要缺点
- Affinity Propagation的主要缺点是其复杂性。该算法的时间复杂度为
,其中 N 是样本数量,I 是直到收敛的迭代次数
- 如果使用密集的相似性矩阵,则内存复杂度为
,但如果使用稀疏的相似性矩阵则可以降低。
- 这使得Affinity Propagation最适合小到中等大小的数据集
2 sklearn实现
class sklearn.cluster.AffinityPropagation(*, damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity='euclidean', verbose=False, random_state=None)
2.1 主要参数
damping | float,默认为0.5 阻尼因子,取值范围是[0.5, 1.0)
|
| max_iter | int,默认为200 最大迭代次数 |
| convergence_iter | int,默认为15 估计的簇数量没有变化的迭代次数,达到该次数则停止收敛 |
| preference | array-like形状为(n_samples,)或浮点数,默认为None 每个点的偏好 - 具有较大偏好值的点更有可能被选择为典型样本 如果没有传递偏好作为参数,它们将被设置为输入相似度的中值。 |
| affinity | {‘euclidean’, ‘precomputed’},默认为‘euclidean’ 使用哪种亲和力。目前支持‘precomputed’和欧几里得。‘euclidean’使用点之间的负平方欧几里得距离。 |
2.2 主要属性
from sklearn.cluster import AffinityPropagation
import numpy as npX = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]])ap=AffinityPropagation(damping=0.8).fit(X)
| cluster_centers_indices_ | 簇中心的索引
|
| cluster_centers_ | 簇中心
|
| labels_ | 每个点的标签
|
| affinity_matrix_ | 亲和力矩阵
|
| n_iter_ | 收敛所需的迭代次数
|
参考内容:AP聚类算法(Affinity propagation) - 知乎 (zhihu.com)
常见聚类算法及使用--Affinity Propagation(AP)_af nity propagation 是什么意思-CSDN博客
相关文章:
聚类笔记/sklearn笔记:Affinity Propagation亲和力传播
1 算法原理 1.1 基本思想 将全部数据点都当作潜在的聚类中心(称之为 exemplar )然后数据点两两之间连线构成一个网络( 相似度矩阵 )再通过网络中各条边的消息( responsibility 和 availability )传递计算出各样本的聚类中心。 1.2 主要概念 Examplar聚类中心similarity S(i…...
Linux常用操作 Vim一般使用 SSH介绍 SSH密钥登录
目录 1. 常用命令 2. vim一般使用 3. SSH介绍 4. ssh密钥登录 1. 常用命令 1)# 与 $ 提示的区别 # 表示用户有root权限,一般的以root用户登录提示符为#, $提示符表示用户为普通用户 2)ifconfig 查看ip地址 eno1: 代表由主板…...
Hadoop技术与应用的习题
第一章测验 1、下面哪个选项不属于Google的三驾马车? A.HDFS B.MapReduce C.BigTable D.GFS 2、下面哪个思想是为了解决PageRank(网页排名)的问题? A.GFS B.BigTable C.MapReduce D.YARN 3、GFS 存储的文件都被分割成固定大小的…...
4.4 抗锯齿
一、锯齿是怎么产生的 二、抗锯齿介绍 1.SSAA(super sample anti-aliasing) 拿4xSSAA举例子,假设最终屏幕输出的分辨率是800x600, 4xSSAA就会先渲染到一个分辨率1600x1200的buffer上,然后再直接把这个放大4倍的buffer下采样至800x600。这种做法在数学上…...
vue-router 路由权限,路由导航守卫
addRouter() 添加路由 使用场景 列如:菜单权限的分配(管理员与用户不一致) 根据后台返回 参数 定义isAdmin根据isAdmin 分配 let isAdmin true // 添加路由 可以传参 一级路由名称 来添加二级路由 if (isAdmin) {router.addRoute({path: /…...
2022最新版-李宏毅机器学习深度学习课程-P49 GPT的野望
GPT→类似于Transformer Encoder 训练任务:Predict Next Token 使用MASK-attention,不断预测“下一个token”。 可以用GPT生成文章。 How to use GPT? 给出描述和例子 给出前半段,补上后半段 In-context Learning(no GD) 结果 目前看起…...
应用软件安全编程--28SSL 连接时要进行服务器身份验证
当进行SSL 连接时,服务器身份验证处于禁用状态。在某些使用SSL 连接的库中,默认情况下不 验证服务器证书。这相当于信任所有证书。 对 SSL 连接时要进行服务器身份验证的情况,示例1给出了不规范用法(Java 语言)示例。示例2 给出了规范用法(J…...
深度学习之七(深度信念网络和受限玻尔兹曼机器)
概念 深度信念网络(Deep Belief Networks,DBN)和受限玻尔兹曼机器(Restricted Boltzmann Machines,RBMs)都是无监督学习的模型,通常用于特征学习、降维和生成数据。 受限玻尔兹曼机器(RBM): 结构: RBM 是一个两层神经网络,包括一个可见层和一个隐藏层。这两层之间…...
CTF-PWN-QEMU-前置知识
文章目录 QEMU 内存管理(QEMU 如何管理某个特定 VM 的内存)MemoryRegion gpa->hpaFlatView:表示MR 树对应的地址空间FlatRange:存储不同MR对应的地址信息AddressSpace:不同类型的 MemoryRegion树RAMBlock总体简化图 QEMU 设备模拟 &#x…...
iEnglish全国ETP大赛:教育游戏助力英语习得
“seesaw,abacus,sword,feather,frog,lion,mouse……”11月18日,经过3局的激烈较量,“以过客之名队”的胡玲、黄长翔、林家慷率先晋级“玩转英语,用iEnglish”第三届全国ETP大赛的16强,在过去的周末中,还有TIK徘徊者队、不负昭华队、温柔杀戮者队先后晋级。据悉,根据活动规则,在…...
租车系统开发/多功能租车平台微信小程序源码/汽车租赁系统源码/汽车租赁小程序系统
源码介绍: 多功能租车平台微信小程序源码,作为汽车租赁、摩托车租车平台系统源码,是小程序系统。基于微信小程序的汽车租赁系统源码。 开发环境及工具: 大等于jdk1.8,大于mysql5.5,idea(eclip…...
Nevron Vision for .NET 2023.1 Crack
Nevron Vision for .NET 适用于桌面和 Web 应用程序的高级数据可视化 Nevron Vision for .NET提供最全面的组件,用于构建面向 Web 和桌面的企业级数据可视化应用程序。 该套件中的组件具有连贯的 2D 和 3D 数据可视化效果,对观众产生巨大的视觉冲击力。我…...
基于Python的新浪微博爬虫程序设计与实现
完整下载:基于Python的新浪微博爬虫程序设计与实现.docx 基于Python的新浪微博爬虫程序设计与实现 Design and Implementation of a Python-based Weibo Web Crawler Program 目录 目录 2 摘要 3 关键词 4 第一章 引言 4 1.1 研究背景 4 1.2 研究目的 5 1.3 研究意义…...
Java架构师发展方向和历程
目录 1 导论2 架构师的三观培养3 架构师的遇到的困难4 架构师职责5 架构师之路6 架构师的发展方向7 应用领域架构师8 业务架构师9 系统架构师和企业架构师10 技术路线和演进规划11 一线大厂的技术生态拓张案例12 如何推进项目落地想学习架构师构建流程请跳转:Java架构师系统架…...
CUDA与GPU编程
文章目录 CUDA与GPU编程1. 并行处理与GPU体系架构1.1 并行处理简介1.1.1 串行处理与并行处理的区别1.1.2 并行处理的概念1.1.3 常见的并行处理 1.2 GPU并行处理1.2.1 GPU与CPU并行处理的异同1.2.2 CPU的优化方式1.2.3 GPU的特点 1.3 环境搭建 CUDA与GPU编程 1. 并行处理与GPU体…...
C# 执行Excel VBA宏工具类
写在前面 在Excel文档的自动化处理流程中,有部分值需要通过已定义的宏来求解,所以延伸出了用C# 调用Excel中的宏代码的需求。 首先要从NuGet中引入Microsoft.Office.Interop.Excel 类库 using Excel Microsoft.Office.Interop.Excel; 代码实现 /// &l…...
acwing算法基础之数学知识--求组合数基础版
目录 1 基础知识2 模板3 工程化 1 基础知识 (一) 组合数 C n k C_n^k Cnk的计算公式, C n k n ⋅ ( n − 1 ) ⋯ ( n − k 1 ) 1 ⋅ 2 ⋯ k C_n^k\frac{n\cdot(n-1)\cdots(n-k1)}{1\cdot 2\cdots k} Cnk1⋅2⋯kn⋅(n−1)⋯(n−k1) …...
SpringBoot中的classpath都包含啥
一句话总结:classpath 等价于 main/java main/resources 第三方jar包的根目录。下面详细解释。 参考:SpringBoot中的classpath...
新王加冕,GPT-4V 屠榜视觉问答
当前,多模态大型模型(Multi-modal Large Language Model, MLLM)在视觉问答(VQA)领域展现了卓越的能力。然而,真正的挑战在于知识密集型 VQA 任务,这要求不仅要识别视觉元素,还需要结…...
python之TCP的网络应用程序开发
文章目录 版权声明python3编码转换socket类的使用创建Socket对象Socket对象常用方法和参数使用示例服务器端代码客户端代码 TCP客户端程序开发流程TCP服务端程序开发流程TCP网络应用程序注意点socket之send和recv原理剖析send原理剖析recv原理剖析send和recv原理剖析图 多任务版…...
RPG Maker Decrypter:终极游戏资源解密工具完整指南
RPG Maker Decrypter:终极游戏资源解密工具完整指南 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/rp/RPG…...
ESP8266项目功耗太高?手把手教你用INA226模块精准测量并优化(从接线到数据分析)
ESP8266项目功耗优化实战:用INA226实现精准测量与深度调优 在物联网设备开发中,电池供电设备的续航能力往往决定了产品的成败。ESP8266作为一款高性价比的Wi-Fi芯片,其功耗特性直接影响着设备的运行时间。本文将带你从硬件连接到数据分析&…...
Python农业物联网融合不是“拼接”,而是“重构”:用本体建模+动态权重分配实现作物胁迫预警准确率跃升至94.3%(IEEE IoT Journal 2024最新实践)
更多请点击: https://intelliparadigm.com 第一章:Python农业物联网多源数据融合 多源异构数据接入挑战 现代农业物联网系统常集成土壤温湿度传感器、气象站、无人机遥感影像、边缘摄像头及历史农事日志等多类数据源,其协议(MQT…...
【困难】0左边必有1的二进制字符串数量-Java:解法二
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑&#x…...
无似然温度采样算法解析与应用实践
1. 无似然温度采样算法解析温度采样是控制生成模型输出的核心技术,传统方法通过调整softmax前的logits实现概率分布重缩放。但在无似然框架(如CALM)中,由于只能访问采样器而无法获取显式概率分布,这一方法面临根本性挑…...
从3D打印验证到工厂定制:我用SolidWorks钣金功能设计铝合金面板的全流程记录
从3D打印验证到工厂定制:我用SolidWorks钣金功能设计铝合金面板的全流程记录 在创客文化盛行的今天,将数字模型转化为实体物件的过程从未如此触手可及。作为一名热衷于硬件原型开发的技术爱好者,我最近完成了一个铝合金控制面板的设计制造项目…...
GModPatchTool终极指南:三步解决Garry‘s Mod浏览器与启动故障
GModPatchTool终极指南:三步解决Garrys Mod浏览器与启动故障 【免费下载链接】GModPatchTool 🇬🩹🛠 Patches for Garrys Mod. Updates/Improves CEF and Fixes common launch/performance issues (esp. on Linux/Proton/macOS). …...
3分钟掌握pdftotext:Python中最高效的PDF文本提取终极指南
3分钟掌握pdftotext:Python中最高效的PDF文本提取终极指南 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 你是否曾为从PDF文档中提取文本而烦恼?面对格式复杂的PDF文件…...
逆向分析避坑:X64dbg内置字符串搜索为何不认UTF-8?聊聊插件生态与自定义解析
X64dbg字符串解析机制深度剖析:从编码原理到插件生态设计 逆向工程工具X64dbg在处理多语言字符串时表现出的"选择性支持"现象,实际上揭示了开源软件国际化策略与社区协作的经典范式。当开发者首次遇到中文字符串显示为乱码时,往往会…...
【企业级Dev Container性能优化白皮书】:20年微软MVP亲授VS Code远程容器开发提速300%的7大黄金法则
更多请点击: https://intelliparadigm.com 第一章:Dev Container性能优化的企业级价值与挑战全景 在现代云原生研发体系中,Dev Container 已成为企业统一开发环境、保障“所写即所运”的关键基础设施。其核心价值不仅体现在环境一致性与安全…...










