(完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类

news2024/12/26 22:43:22

文章目录

      • 背景
      • 输入点
      • 直接输入邻接矩阵

背景

网上倒是有一些关于使用sklearn进行谱聚类的教程,但是这些教程的输入都是一些点的集合,然后根据谱聚类的原理,其会每两个点计算一次亲密度(可以认为两个点距离越大,亲密度越小),假设一共有N个点,那么就是N*N个亲密度要计算,这特别像什么?图里面的邻接矩阵对不对。然后算法再根据这些亲密度进行聚类,即亲密度越大的点,他们应该聚在一起。

总结,这些教程都是输入点,没有说如何直接输入邻接矩阵,然后使用sklearn进行谱聚类

输入点

下面的X就是输入的点的坐标,形状为(100,2),我们是对这些点进行聚类,聚两类。然后affinity参数其实就是距离计算公式你选用哪个的意思,比如我们常常知道的欧式距离,曼哈顿距离,当然谱聚类里面不是这些。总之,实际使用中,哪个效果好用哪个,建议官方提供的距离你都可以试一试。

import numpy as np
from sklearn import datasets
from sklearn.cluster import SpectralClustering
import matplotlib.pyplot as plt

X, _ = datasets.make_circles(n_samples=100, factor=0.5, noise=0.05)
#X就是输入的点
fig = plt.figure(figsize=(16,4))

# 谱聚类默认聚类数为8
model = SpectralClustering(n_clusters=2).fit(X)
ax = fig.add_subplot(132)
ax.scatter(X[:,0], X[:,1], c=model.labels_, marker='.')


model = SpectralClustering(n_clusters=2, affinity="nearest_neighbors").fit(X)
ax = fig.add_subplot(133)
ax.scatter(X[:,0], X[:,1], c=model.labels_, marker='.')

plt.show()

在这里插入图片描述

直接输入邻接矩阵

邻接矩阵表示各个点之间的亲密度,我们先准备好邻接矩阵如下,形状是N*N,注意邻接矩阵需要为正数,否则报错,所以我们下面用了指数。

adjacency_matrix=[[ 0.0470,  0.0309,  0.0269,  0.0867,  0.0548,  0.0109,  0.0771,  0.0307,
          0.0276],
        [ 0.1033,  0.0157,  0.0012, -0.0097,  0.0050,  0.0059, -0.0179, -0.0133,
         -0.0074],
        [-0.0070,  0.0795,  0.0222, -0.0379, -0.0281, -0.0073, -0.0569, -0.0341,
         -0.0208],
        [ 0.0370,  0.0165, -0.0008,  0.0012, -0.0044, -0.0090,  0.0311,  0.0330,
          0.0124],
        [-0.0185, -0.0267, -0.0199,  0.1049,  0.0289, -0.0023, -0.0270, -0.0290,
         -0.0348],
        [-0.1064, -0.0719, -0.0368, -0.0589,  0.0236, -0.0024, -0.0903, -0.0769,
         -0.0512],
        [ 0.0624,  0.0479,  0.0304,  0.0762,  0.0512,  0.0178,  0.0633,  0.0288,
          0.0256],
        [-0.0258, -0.0148, -0.0024, -0.0092,  0.0007, -0.0081,  0.0819, -0.0039,
         -0.0092],
        [-0.0472, -0.0152, -0.0039, -0.0405, -0.0287, -0.0161, -0.0083,  0.0608,
         -0.0053]]
adjacency_matrix=np.exp(np.array(adjacency_matrix))
from sklearn.cluster import SpectralClustering
sc = SpectralClustering(3, affinity='precomputed', n_init=100,
                        assign_labels='discretize')#precomputed就是说我们算好了的意思。
sc.fit_predict(adjacency_matrix)  

输出结果

array([1, 2, 2, 1, 0, 0, 1, 1, 0], dtype=int64)

这个就是我们9个点的聚类结果。


完结撒花

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

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

相关文章

程序员节1024

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

期 货 分 仓,资 管 分 仓,跟单软件都有哪些特点?

期货分仓软件是一种用于期货交易的软件系统。通过该系统,机构可以在一个主账户中同时使用多个子账户操作多个期货合约,并且可以设置不同资金量的用户不同的开仓比例。 由于目前国内的期货市场对于国际市场的品种还处于不规范阶段:一方面是保证…

怎么去除视频水印?

当今社交媒体环境中,许多用户面临着怎么去除视频水印的挑战尤其是短视频领域的从业者,这些水印不仅影响了视频的美观度也限制了素材的流动性,为了解决这一问题许多人开始积极寻找有效的方法来去除水印,以便更灵活地使用视频内容&a…

经典卷积神经网络 - AlexNet

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。当时,AlexNet在 ImageNet 大规模视觉识别竞赛中取得了优异的成绩,把深度学习模型在比赛中的正确率提升到一个前所未有的高度…

基于springboot实现广场舞团平台系统项目【项目源码+论文说明】计算机毕业设计

基于SPRINGBOOT实现广场舞团平台系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生&am…

38.红黑树(王道第7章查找补充知识)

目录 一. 红黑树的定义 二. 红黑树的性质 三. 红黑树的插入 四. 红黑树的删除(略) 一. 红黑树的定义 红黑树是二叉排序树-左子树结点值≤根结点值≤右子树结点值。 与普通BST相比,有以下要求: ①每个结点或是红色,或是黑色的②根节点是…

探索C++赋值运算符重载的内部机制:手把手教你精通

W...Y的主页 😊 代码仓库分享💕 🍔前言: 前一篇博客中我们已经了解并学习了初始化和清理模块中的构造函数与析构函数,还有拷贝复制中的拷贝复制函数,它们都是类与对象中重要的成员,今天我们要…

构建实时视频聊天应用:使用WebRTC和Netty的完整指南

构建实时视频聊天应用:使用WebRTC和Netty的完整指南 使用WebRTC和Netty构建实时视频聊天应用准备工作步骤1:创建Netty服务器步骤2:创建WebRTC前端应用步骤3:处理WebRTC连接步骤4:处理Netty服务器端步骤5:运…

光流法动目标检测

目录 前言 一、效果展示 二、光流法介绍 三、代码展示 总结 前言 动目标检测是计算机视觉领域的一个热门研究方向。传统的方法主要基于背景建模,但这些方法对于光照变化、遮挡和噪声敏感。因此,研究人员一直在寻找更加鲁棒和有效的技术来解决这一问题。…

如何性能测试中进行业务验证?

在性能测试过程中,验证HTTP code和响应业务code码是比较基础的,但是在一些业务中,这些参数并不能保证接口正常响应了,很可能返回了错误信息,所以这个时候对接口进行业务验证就尤其重要。下面分享一个对某个资源进行业务…

CentOS 7设置固定IP地址

当我们安装了一个虚拟机或者装了一个系统的时候,经常会遇到需要设置固定ip的情况,本文就以Centos 7为例,讲述如何修改固定IP地址。 1、用ifconfig命令查看使用的网卡 如上图所示,我们就会看到我们目前使用的网卡名称 2、编辑网卡…

nginx创建站点“nginx: [emerg] host not found in upstream”错误

nginx配置语法上没有错误的,只是系统无法解析这个域名,所以报错. 解决办法就是添加dns到/etc/resolv.conf 或者是/etc/hosts,让其能够解析到IP。具体步骤如下: vim /etc/hosts 修改hosts文件,在hosts文件里面加上一句 127.0.0.1 localhost.localdomain x…

TiDB x 北京银行丨新一代分布式数据库的探索与实践

北京银行作为中国最大的城商行,坚持以数字化转型统领发展模式、业务结构、客户结构、营运能力、管理方式的五大转型,分布式数据库建设是北京银行数字化转型的重要组成部分。 在新时代、新监管、新业态、新模式的数字化转型背景下,监管要求的…

刚刚腾讯云发布了2023年双11优惠活动!终于等到你

终于等到你,想买台腾讯云服务器,等啊等,终于等来了2023年腾讯云双十一优惠活动,还好没让我失望,2核4G5M带宽的轻量应用服务器三年566,省钱了: txybk.com/go/1111 哈哈哈哈哈。 2023腾讯云双11优…

《低代码指南》——如何用维格表搭建CRM

信息 手机上就能随时随地记录客户信息更智能地进行部门协作、沟通让每一项客户沟通都有迹可循一个表格实现客户全生命周期管理企业如何在激烈的市场竞争中崭露头角,拥有自己的立足之地,CRM 系统必然是一大助力。但传统 CRM 系统功能太多太复杂,不够灵活,内部推广、维护又很…

Linux常用命令——clear命令

在线Linux命令查询工具 clear 清除当前屏幕终端上的任何信息 补充说明 clear命令用于清除当前屏幕终端上的任何信息。 语法 clear实例 直接输入clear命令当前终端上的任何信息就可被清除。 在线Linux命令查询工具

Python下载安装

本文以Windows下安装python3.6为例 一、进入Python的官网,链接: python官网 二、选择下载,选择Windows 三、选择自己需要版本的python进行下载 四、选择所下载的exe文件,选择Upgrade Now 五、等待下载 六、安装成功

基于蝗虫算法的无人机航迹规划-附代码

基于蝗虫算法的无人机航迹规划 文章目录 基于蝗虫算法的无人机航迹规划1.蝗虫搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用蝗虫算法来优化无人机航迹规划。 1.蝗虫搜索算法 …

Java实现添加文字水印、图片水印

目录 前言 一、获取原图片对象信息 1、读取本地图片 2、读取网络图片 二、处理水印 三、添加水印 四、获取目标图片 五、完整工具类 六、结果展示 前言 现在很多人都喜欢在各种平台上分享自己的照片吧,不管是一些制作出来的媒体图片还是精致的人像图片&…

人大金仓三大兼容:MySQL迁移无忧

近日,MySQL 5.7停服事件引发广泛关注。MySQL目前已经成为中国用户使用非常广泛的数据库,其中5.7版本的用户比重又是最高的。随着信息技术应用创新深入各行各业,国产数据库对MySQL的平滑替换成为大势所趋。 作为数据库领域国家队,人…