(完全解决)如何输入一个图的权重,然后使用sklearn进行谱聚类

news2024/12/19 13:01:43

文章目录

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

背景

网上倒是有一些关于使用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/1121727.html

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

相关文章

知识分享|分段函数线性化及matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

为什么短信验证码要设置有效期?

安全性:验证码的主要目的是为了验证用户的身份,防止恶意或未经授权的访问。如果验证码没有有效期,恶意用户或攻击者可以获取验证码后无限期地尝试使用它。通过设置有效期,可以限制验证码的生命周期,提高系统的安全性。…

Selenium的find_element()与find_elements()和By的几种方法

打印索引元素的文本属性 def print_list(coordinate_list):print(当前项目地块数:, len(coordinate_list))for i in range(0, len(coordinate_list)):print(i)print(coordinate_list[i].text)看一下By支持的方法 class By:"""Set of supported loc…

02-HotSpot 虚拟机对象探秘

HotSpot 虚拟机对象探秘 对象的内存布局 在 HotSpot 虚拟机中,对象的内存布局分为以下 3 块区域: 对象头(Header)实例数据(Instance Data)对齐填充(Padding) 对象头 对象头记录…

基于ResNet34的花朵分类

一.数据集准备 新建一个项目文件夹ResNet,并在里面建立data_set文件夹用来保存数据集,在data_set文件夹下创建新文件夹"flower_data",点击链接下载花分类数据集https://storage.googleapis.com/download.tensorflow.org/example_i…

localforage-本地存储的优化方案

前言 前端本地化存储算是一个老生常谈的话题了,我们对于 cookies、Web Storage(sessionStorage、localStorage)的使用已经非常熟悉,在面试与实际操作之中也会经常遇到相关的问题,但这些本地化存储的方式还存在一些缺陷…

【CSS】BFC 块级格式化上下文

1. 块级格式化上下文(BFC) 它是一块独立的渲染区域,规定该区域内,常规流块盒的布局。 先来说一下常规流块盒: 常规流块盒在水平方向上,必须盛满包含块常规流块盒在包含块的垂直方向上依次摆放常规流块盒…

「我的AIGC咒语库:分享和AI对话交流的秘诀——如何利用Prompt和AI进行高效交流?」

文章目录 每日一句正能量前言基础介绍什么是Prompt?什么是 Prompt Engineering?为什么需要 Prompt Engineering?如何进行 Prompt Engineering?Prompt的基本原则Prompt的编写模式AI 可以帮助程序员做什么?技术知识总结拆解任务阅读…

2022年全国部分省市跨境电商交易规模汇总

近年来,跨境电商发展迅速,国家陆续出台了相关支持政策,跨境电商优势和潜力有望进一步释放。海关总署数据,根据初步测算,2022年我国跨境电商进出口2.11万亿元,增长9.8%。其中,出口1.55万亿元&…

ATX Power Supply

Pinout 20 PIN MOLEX 39-29-9202 at the motherboard 20 PIN MOLEX 39-01-2200 at the cable PinNameColorDescription13.3VOrange+3.3 VDC23.3VOrange+3.3 VDC3COMBlackGround45VRed+5 VDC

哈夫曼树、哈夫曼编码/解码

哈夫曼树 哈夫曼树的基本介绍 哈夫曼树构建步骤图解 创建哈夫曼树代码实现 """ 创建哈夫曼树 """ class EleNode:""" 节点类 """def __init__(self, value: int):self.value valueself.left None # 指向左子…

新加坡攻略

文章目录 基础信息入境行李App电信交通餐饮购物法规旅游牛车水(Chinatown)克拉码头(Clarke Quay)东海岸(East Coast)丹戎巴葛(Tanjong Pagar)滨海湾(Marina Bay&#xff…

Android学习之路(21) 进程间通信-AIDL与Servce基本使用

Service 与 Thread 和 进程 之间的关系 进程:应用程序在内存中分配的空间。(正在运行中的程序)线程:负责程序执行的单元,也称为执行路径。(需要线程来执行代码)。一个进程至少包含一条线程&…

ip报头和ip报文切片组装问题

在tcp层将数据打包封装向下传递后,网络层将其整个看为一个数据,然后对其数据加网络报头操作,在网络层最具有代表的协议就是ip协议。在这里我们探究ipv4的报头。 ip报头 4位版本:指定ip的版本号,对于ipv4来说就是4。 …

粤嵌实训医疗项目day02(Vue + SpringBoot)

目录 一、创建vue项目并运行 二、vue-cli中的路由使用 三、element-ui框架、实现页面布局以及vue-路由 四、前端登录页面 五、user登录后端接口完善【后端】 六、user登录前端-请求工具-请求发起【前端】 七、请求的跨域-访问策略 八、完善项目的页面布局、导航菜单以及…

反射的作用(可以使用反射保存所有对象的具体信息)

1、绕过 编译阶段 为集合添加数据 反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以 为集合存入其他任意类型的元素的 。泛型只是在编译阶段可以约束集合只能操作某种数据类型,在 编译成Class文件进入 运行阶段 的时候&a…

存储优化知识复习一详细版解析

存储优化 知识复习一 一、 选择题 1、1948 年,____提出了“信息熵”(shāng) 的概念,解决了对信息的量化度量问题。 A、薛定谔 B、香农 C、克劳修斯 D、纳什 【参考答案】B2、 RAID2.0技术下,LUN是建立在____上。 A、硬盘 B、条带 C、Chun…

RESTful 分享

RESTful 分享 什么是RESTful 理解RESTful RESTful的使用 1.什么是RESTful REST全称是Representational State Transfer,中文译文就是“表述性状态转移”。 在2000年,由Roy Fielding(HTTP规范的主要编写者之一)在博士论文中提…

鲁迅为什么打周树人?今天的昨天是明天的什么?chatgpt4.0告诉你

GPT-4架构,是OpenAI开发的一个大型语言模型。虽然和GPT-3.5都是基于GPT-3的进一步发展,但是GPT-4在模型大小,知识更新,知识更新等方面都比GPT-3更上一个层次。现在国内很多平台号称可以使用GPT4,而实际上是能申请到GPT…

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

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;最短路径问题 平面上有n个点&#xff08;n<100&#xff09;&#xff0c;每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线&#xff0c;则表示可从一个点到达另一个点&#xff…