matlab练习程序(马尔可夫聚类MCL)
本文主要参考:
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)的更多相关文章
- 马尔科夫随机场(MRF)及其在图像降噪中的matlab实现
(Markov Random Field)马尔科夫随机场,本质上是一种概率无向图模型 下面从概率图模型说起,主要参考PR&ML 第八章 Graphical Model (图模型) 定义:A g ...
- 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)
从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...
- [综]隐马尔可夫模型Hidden Markov Model (HMM)
http://www.zhihu.com/question/20962240 Yang Eninala杜克大学 生物化学博士 线性代数 收录于 编辑推荐 •2216 人赞同 ×××××11月22日已更 ...
- 机器学习&数据挖掘笔记_19(PGM练习三:马尔科夫网络在OCR上的简单应用)
前言: 接着coursera课程:Probabilistic Graphical Models上的实验3,本次实验是利用马尔科夫网络(CRF模型)来完成单词的OCR识别,每个单词由多个字母组合,每个字 ...
- 隐马尔科夫模型(Hidden Markov Models)
链接汇总 http://www.csie.ntnu.edu.tw/~u91029/HiddenMarkovModel.html 演算法笔记 http://read.pudn.com/downloads ...
- Python实现HMM(隐马尔可夫模型)
1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别.文本翻译.序列预测.中文分词等多个领域.虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐 ...
- 马尔可夫随机场(Markov random fields) 概率无向图模型 马尔科夫网(Markov network)
上面两篇博客,解释了概率有向图(贝叶斯网),和用其解释条件独立.本篇将研究马尔可夫随机场(Markov random fields),也叫无向图模型,或称为马尔科夫网(Markov network) ...
- 隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 7. 词性标注 7.1 词性标注概述 什么是词性 在语言学上,词性(Par-Of- ...
- HMM基本原理及其实现(隐马尔科夫模型)
HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...
随机推荐
- [EFCore]EntityFrameworkCore Code First 当中批量自定义列名
在使用.NET CORE 进行 Web 开发的时候会考虑到使用不同数据库的情况,并且在每种数据库建立表结构的时候会采用不同的命名规则.之前的解决方法是使用 [ColumnAttribute] 或者 [ ...
- 【Java提高】---通过UUID、SHA-1、Base64组合加密
通过UUID.SHA-1.Base64组合加密 该篇文章实现的最终效果是: 1)加密是不可逆的. 2)相同字符串加密产生后的字符串都不一样 3)所以要想比较两个字符串是否相等,需要用已经加过密的字符串 ...
- RabbitMQ配置
RabbitMQ Configuration RabbitMQ提供多种配置方式:配置文件.环境变量.运行时参数等等. 默认配置文件的位置在/etc/rabbitmq/ Config File Loca ...
- [Jenkins][git]构建时提示Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset --hard" returned status code 128:
--------------------- 如需转载,转载请注明出处. --------------------- 今日发现所有IOS构建相关的job全部失败,并提示如下错误: ERROR: Erro ...
- python 备忘
import jsonu='''{ "maps": [ { "id": "blabla", "iscategorical" ...
- [NewLife.XCode]数据初始化
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...
- shell测试命令test、[ ]、[[ ]]
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html test可用于测试表达式,支持测试的范围包括:字符串比较,算术 ...
- ARM 处理器寻址方式之间接寻址的几种表达
我们以 LDR 指令为例来分别举例分析. LDR 指令的格式为: LDR{条件} 目的寄存器,<存储器地址> LDR 指令是字加载指令,用于从存储器中将一个 32 位的字数据送到目的寄存器 ...
- Spring Cloud Stream如何处理消息重复消费?
最近收到好几个类似的问题:使用Spring Cloud Stream操作RabbitMQ或Kafka的时候,出现消息重复消费的问题.通过沟通与排查下来主要还是用户对消费组的认识不够.其实,在之前的博文 ...
- Linux之定时任务Crond使用
Linux之定时任务Crond使用 一.用法 crond服务是linux系统自带的服务,是不需要手动安装的: crond服务是一种守护进程: Linux中的用户使用contab命令来配置corn任务: ...