【谱聚类算法总结】

前言:以前只是调用过谱聚类算法,我也不懂为什么各家公司都问我一做文字检测的这个算法具体咋整的,没整明白还给我挂了哇擦嘞?讯飞还以这个理由刷本宝,今天一怒把它给整吧清楚了,下次谁再问来!说不晕你算我输!

一、解释:

   谱聚类是一种基于图论的算法,主要思想是把所有的数据看做空间中的点,这些点之间用带权边连接,距离越近权重越大,通过对这些点组成的图进行切割,让切图后的子图间的权重和尽可能小,子图内的权重尽可能大,从而达到聚类的目的。

   切图的过程是:定义一个子图与其他子图间的权重和,同时要求每个子图的个数不能太少,这样图切问题就转换为了最小化这个权重和/子图个数的过程。优化这个过程我们定义一个指示矩阵h,要分为的类别是(A1,A2...Ak),i属于Aj类则hij≠0,否则等于0,这样优化式子得到h之后我们就能知道各个节点的类别。根据分析得知,这个h的解与拉普拉斯矩阵L和权重矩阵D有关,具体来说是D-1/2LD-1/2的k个最小的特征值对应的特征向量,这样我们就得到了h,也将维度从n降到了k。一般来说需要对h进行按行进行标准化,然后再对这个n*k的矩阵按行进行kmeans聚类,就得到了最终的聚类结果。

二、推导:

  

    

三、步骤:    

    输入:样本集D=(x1,x2,...,xn),相似矩阵的生成方式, 降维后的维度k1, 聚类方法,聚类后的维度k2

  输出: 簇划分C(c1,c2,...ck2). 

    1) 根据输入的相似矩阵的生成方式构建样本的相似矩阵S。

    2)根据相似矩阵S构建邻接矩阵W,构建度矩阵D。

    3)计算出拉普拉斯矩阵L。

    4)构建标准化后的拉普拉斯矩阵D−1/2LD−1/2

    5)计算D1/2LD1/2最小的k1个特征值所各自对应的特征向量f。

    6) 将各自对应的特征向量f组成的矩阵按行标准化,最终组成n×k1维的特征矩阵F。

    7)对F中的每一行作为一个k1维的样本,共n个样本,用输入的聚类方法进行聚类,聚类维数为k2

    8)得到簇划分C(c1,c2,...ck2)。

四、优缺点:

   优点:只需要相似度矩阵,方便处理稀疏数据的聚类;使用了降维,处理高维数据效果比传统聚类方法好。

   缺点:如果降维的幅度不够,效果和效率均不够好;依赖于相似度矩阵。

五、链接:

   https://www.cnblogs.com/pinard/p/6221564.html

转载于:https://www.cnblogs.com/EstherLjy/p/9432651.html

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

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

相关文章

嵌入式的汉字原来是这样显示的?

摘要:LCD是嵌入式常见设备,如何在LCD上显示汉字和英文?矢量字体和点阵字体有何不同?同一个字符为何有多种编码?GB2312、GB18030指什么?他们之间有关系吗?嵌入式设备如何支持多国语言&#xff1f…

查看数据库、表、索引的物理存储情况

在管理、维护数据库时,经常需要查看数据库文件、日志文件所占用的磁盘空间,以及磁盘还剩下的磁盘空间,你可以通过下面几种方面查看数据库文件详细情况:1: 是通过远程连接(或VPN)连接到数据库服务器,直接去查…

Spring简化Java开发_spring如何简化java开发

1、spring简介Spring的主要目的是用来替代更加重量级的企业级的java技术2、spring如何简化java开发1)基于POJO的轻量级和最小侵入性编程;2)通过依赖注入和面向接口实现松耦合;3)基于切面和惯例进行声明式编程;4)通过切面和模板减少样版式代码…

Linux 应用调试神器- ASan

今天有小伙伴跟我他的程序崩溃了要怎么办,刚好我最近做项目使用到这个神器,做应用开发的同学可以看看,可以在C/C上配置使用。不过这仅限于调试,如果你是发布版本,一定要把这个功能关闭。当然,这是我实操的结…

asp.net验证提示美化效果

前段时间做了个ymPrompt提示效果的验证控件,ymPrompt是弹出提示的。弹出提示会增加无畏的鼠标点击动作。前段时间看到园里有位高手写了个纯cssjs的一个效果,我把它和asp.net验证控件结合起来,用这位高手写的效果做为asp.net难控件的提示效果。…

java全栈工程师要求_Java全栈工程师

分布式日志解决方案(ELKKafka)微信登录解决方案微信支付解决方案支付宝支付解决方案微服务持续集成解决方案(Jenkins)Spring Cloud全家桶搭建解决方案分布式事务解解决方案分布式锁解决方案(Redis)微服务网关解决方案(一代Zuul\二代Gateway)微服务集中配置服务解决方案(Config)…

在Linux内核使用Kasan

昨天的文章发出来后,有同学在群里说内核也可以使用这个工具,所以再转发一篇wowo网站的文章,希望对大家有帮助。Linux 应用调试神器- ASan1. 前言KASAN是一个动态检测内存错误的工具。KASAN可以检测全局变量、栈、堆分配的内存发生越界访问等问…

网线有问题?

昨晚网络卡死了。今天换了一条网线。掉包率下降不少。。转载于:https://blog.51cto.com/onlyjoking/398046

跟韦老师聊了一个深夜

自从尚明从韦老师那边离职后,我已经很难得到韦老师的消息了,有时候我也想过去看下他,但是也很难抽的开时间。而且,我们两都挺技术的,如果见面后不知道聊什么,会不会有点尴尬。😄上面那个回复是我…

java面向过程编程怎么写_从面向过程到面向对象,我的编程之路

也许现在新一代的程序员一开始涉足的就是c,C#,Java这类面向对象的语言,如果这样,这篇文章可能得不到他们的认同。 这里,我只想写写我从面向过程到面向对象开发成长中的一些感想而已。我最初学习的语言是basic&#xff…

c#xml操作方法

using System.Xml; //初始化一个xml实例XmlDocument xmlnew XmlDocument();//导入指定xml文件xml.Load(path);xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));//指定一个节点XmlNode rootxml.SelectSingleNode("/root");//获取节点…

急救WINDOWS内存错误

该内存不能为read或written的解决方案 使用Windows操作系统的人有时会遇到这样的错误信息:「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。如果去请教一些「高手」&#xf…

大厂不是铁饭碗

最近的事情有点多前段时间一个以前的朋友,买房找我咨询,问我恒大的房子能不能买,我当时没有给出明确的回复,但是也说了自己的看法。近些年房子越来越贵,我是从15年开始接触房子,不过我从没有想过靠房子来赚…

java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现

这个题目会有多个解法:需要判断n的二进制有几个1first:通过n向右移位&1,如果n的最后为1,那么与1结果为1,(相信大家都会与运算,hashmap就是用与运算)以此来实现,循环判断有多少个1&#xff0…

cesss

件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个转载于:https://blog.51cto.com/wuxh868/402629

python知识点1

1.if __name__ main 的作用 在此函数下的代码,只有当该文件运行的时候才能运行。当前文件如果被当做模块被其他文件导入,该函数下的代码就不会被执行。2.__init__方法在类被实例化之前,先使用__init__方法进行一些初始化操作,如…

java语句中switch_Java中的switch-case语句

在codewar里使用了以下switch-case语句,不熟练出错,所以记录一下。class ArithmeticFunction {public static int arithmetic(int a, int b, String operator) {int result0;switch(operator){case "add":resultab;case "subtract":…

使用valgrind检测内存问题

valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。1valgrind安装可以到官网下载最新的源码包:valgrind官网下载,也可以直接使用 c_utils/debug/valgrind 目录提供的 valgrind-3.13.0.tar.bz2 源码包。首先解压源码包tar xjf valgri…

[转]一个人脸检测器

//本文使用到Emgu.CV库,该库是C#语言对OpenCV的封装,以下是一个列子程序的改正版本。using System; using System.Collections.Generic; using System.Text; using Emgu.CV.Structure; using Emgu.CV;namespace VSL.Plugin.TrackingSystem.SimpleTrackin…

项目中cxf和weblogic整合时报错的问题

GJYW项目使用的weblogic版本是10.3.6,cxf使用的版本是3.1.4 在将项目部署到weblogic服务器上时就会报错,通过下面的方式可以解决weblogic和cxf框架在一起报错的问题(解决了本项目报错的问题,未必全部适用):…