本文主要参考:

https://wenku.baidu.com/view/b7907665caaedd3383c4d31b.html

https://blog.csdn.net/u010376788/article/details/50187321

虽然参考上面两篇文章,不过这里和他给出的算法步骤不完全一致。

因为上面文章是针对Graphs的,矩阵中有边为0的数据,而我的数据是Vector的,边是根据距离计算出来的,应该还是有点区别的,而且我还用了kmeans。

首先给出他的算法步骤:

  1.输入一个无向图,Expansion的幂e和Inflation的参数r。

  2.创建邻接矩阵。

  3.对每个结点添加自循环(可选的)。

  4.标准化矩阵(每个元素除以所在列的所有元素之和)。

  5.计算矩阵的第e次幂。

  6.用参数r对求得的矩阵进行Inflation处理。

  7.重复第5步和第6步,直到状态稳定不变(收敛)。

  8.把最终结果矩阵转换成聚簇。

然后是这里的算法步骤:

  1.输入数据,创建邻接矩阵。

  2.标准化矩阵(每个元素除以所在列的所有元素之和)。

  3.对标准化后的矩阵进行马尔可夫状态转移。

  4.重复第2步和第3步,直到状态稳定不变(收敛)。

  5.使用kmeans把最终结果矩阵转换成聚簇。(不明白kmeans的可以看看这篇文章

代码如下:

clear all;
close all;
clc; K=;
theta=:0.01:*pi;
p1=[*cos(theta) + rand(,length(theta))/;*sin(theta)+ rand(,length(theta))/];
p2=[*cos(theta) + rand(,length(theta))/;*sin(theta)+ rand(,length(theta))/];
p3=[cos(theta) + rand(,length(theta))/;sin(theta)+ rand(,length(theta))/];
p=[p1 p2 p3]'; randIndex = randperm(length(p))'; %打乱数据顺序
p=p(randIndex,:);
plot(p(:,),p(:,),'.') for i = :length(p)
for j =:length(p)
W(i,j) = sqrt(sum((p(i,:)-p(j,:)).^));  %根据距离初始化无向图的边
end
end preW=W;
while
x=repmat(sum(W),length(p),);
W=W./x;
W=W*W; %马尔科夫状态转移 if sum(sum(preW-W))<1e-15
break;
end preW=W;
end [idx,ctrs] = kmeans(W(:,),K); %用kmeans将收敛矩阵转换为聚簇
figure;
plot(p(idx==,),p(idx==,),'r.')
hold on;
plot(p(idx==,),p(idx==,),'g.')
plot(p(idx==,),p(idx==,),'b.')

原始数据:

聚类后:

matlab练习程序(马尔可夫聚类MCL)的更多相关文章

  1. 马尔科夫随机场(MRF)及其在图像降噪中的matlab实现

    (Markov Random Field)马尔科夫随机场,本质上是一种概率无向图模型 下面从概率图模型说起,主要参考PR&ML 第八章 Graphical Model (图模型) 定义:A g ...

  2. 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)

    从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...

  3. [综]隐马尔可夫模型Hidden Markov Model (HMM)

    http://www.zhihu.com/question/20962240 Yang Eninala杜克大学 生物化学博士 线性代数 收录于 编辑推荐 •2216 人赞同 ×××××11月22日已更 ...

  4. 机器学习&数据挖掘笔记_19(PGM练习三:马尔科夫网络在OCR上的简单应用)

    前言: 接着coursera课程:Probabilistic Graphical Models上的实验3,本次实验是利用马尔科夫网络(CRF模型)来完成单词的OCR识别,每个单词由多个字母组合,每个字 ...

  5. 隐马尔科夫模型(Hidden Markov Models)

    链接汇总 http://www.csie.ntnu.edu.tw/~u91029/HiddenMarkovModel.html 演算法笔记 http://read.pudn.com/downloads ...

  6. Python实现HMM(隐马尔可夫模型)

    1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别.文本翻译.序列预测.中文分词等多个领域.虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐 ...

  7. 马尔可夫随机场(Markov random fields) 概率无向图模型 马尔科夫网(Markov network)

    上面两篇博客,解释了概率有向图(贝叶斯网),和用其解释条件独立.本篇将研究马尔可夫随机场(Markov random fields),也叫无向图模型,或称为马尔科夫网(Markov network) ...

  8. 隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 7. 词性标注 7.1 词性标注概述 什么是词性 在语言学上,词性(Par-Of- ...

  9. HMM基本原理及其实现(隐马尔科夫模型)

    HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...

随机推荐

  1. Flume的各种类型的组件介绍

    1.   Source NetCat Source:绑定的端口(tcp.udp),将流经端口的每一个文本行数据作为Event输入: type:source的类型,必须是netcat. bind:要监听 ...

  2. sql server 锁与事务拨云见日(上)

    一.概述 讲到sql server锁管理时,感觉它是一个大话题,因为它不但重要而且涉及的知识点很多,重点在于要掌握高并发要先要掌握锁与事务,涉及的知识点多它包括各式各样的锁,锁的组合,锁的排斥,锁延伸 ...

  3. mysql 开发基础系列20 事务控制和锁定语句(上)

    一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性.这样就需要使 ...

  4. Linux 权限位详解

    1. Linux 权限位 对于权限,有点绕,因为文件的权限和目录的权限是有一些区别的. 在Linux中,有5种权限,分别是,r.w.x.s.t. 可读权限:r 可写权限:w 可执行权限:x Setui ...

  5. 向上造型中让我入坑的地方 (><)

    今天周六,闲着蛋疼就报名参加了公司的一个java比赛,比赛地点某某大厦11楼会议室,想象中应该是能容纳上百人的超大会议室.没成想,到地方一看,只是一个能容纳六七人的有圆形会议桌的小会议室.不过这仍然不 ...

  6. MySQL数据库——表操作

    I.表操作 一.创建表 基本语法如下: create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8: ...

  7. jpa的查询语法

  8. YARN集群的mapreduce测试(二)

    只有mapTask任务没有reduceTask的情况: 测试准备: 首先同步时间,然后 开启hdfs集群,开启yarn集群:在本地"/home/hadoop/test/"目录创建u ...

  9. 业务开发(六)—— MyBatis框架

    0x01.元素内容必须由格式正确的字符数据或标记组成. Caused by: org.apache.ibatis.builder.BuilderException: Error creating do ...

  10. 怎么将XML字符串转换为XmlDocument,并获取部分节点值

    我们的目标:解析XML字符串,并获取节点:z:row下的属性:ows_LinkFilename的值集合??? XML字符串数据结构如下: <listitems xmlns:s='uuid:BDC ...