本文主要参考:

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

因为上面文章是针对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=3;

theta=0:0.01:2*pi;

p1=[3*cos(theta) + rand(1,length(theta))/2;3*sin(theta)+ rand(1,length(theta))/2];

p2=[2*cos(theta) + rand(1,length(theta))/2;2*sin(theta)+ rand(1,length(theta))/2];

p3=[cos(theta) + rand(1,length(theta))/2;sin(theta)+ rand(1,length(theta))/2];

p=[p1 p2 p3]';

randIndex = randperm(length(p))'; %打乱数据顺序

p=p(randIndex,:);

plot(p(:,1),p(:,2),'.')

for i = 1:length(p)

for j =1:length(p)

W(i,j) = sqrt(sum((p(i,:)-p(j,:)).^2));  %根据距离初始化无向图的边

end

end

preW=W;

while 1

x=repmat(sum(W),length(p),1);

W=W./x;

W=W*W; %马尔科夫状态转移

if sum(sum(preW-W))<1e-15

break;

end

preW=W;

end

[idx,ctrs] = kmeans(W(:,1),K); %用kmeans将收敛矩阵转换为聚簇

figure;

plot(p(idx==1,1),p(idx==1,2),'r.')

hold on;

plot(p(idx==2,1),p(idx==2,2),'g.')

plot(p(idx==3,1),p(idx==3,2),'b.')

原始数据:

聚类后:

mcl计算matlab代码,matlab练习程序(马尔可夫聚类MCL)相关推荐

  1. 马尔可夫聚类 MCL

    本文转载自:聚类算法--MCL 和 马尔可夫聚类算法 Background Different Clustering Vector Clustering 我们在描述一个人时,常常会使用他所拥有的特点来 ...

  2. arcgis使用arcpy计算土地利用LUCC变化转移矩阵、马尔科夫模型变化表,最好用的方法TabulateArea实现两期数据变化统计

    arcgis使用arcpy计算土地利用LUCC变化转移矩阵.马尔科夫模型变化表,最好用的方法TabulateArea实现两期数据变化统计: 下载链接:LUCC变化转移矩阵Arcpy脚本 coding ...

  3. matlab应用于体育彩票上,马尔科夫预测法在体育彩票“排列三”中的应用

    张思思  曾华 (中南大学土木建筑学院,湖南长沙  410012) 摘要:本文首先对"体彩排列三"中的和数与和尾上近1074期的出号数字进行统计,利用马尔可夫链,求得其相应的转移矩 ...

  4. 求解平稳分布matlab,随机过程课程设计--应用马尔科夫链的平稳分布预测空调市场的占有率.doc...

    课程名称: <随机过程> 课程设计(论文) 题 目: 应用马尔科夫链的平稳分 布预测市场占有率 学 院: 理学院 专 业: 数学与应用数学 班 级: 15-1 学 生 姓 名: 邹光睿 学 ...

  5. Matlab实现Viterbi算法,隐马尔可夫模型(HMM)的MATLAB实现——Viterbi算法

    维特比算法实际是用动态规划求解隐马尔可夫模型解码问题,即用动态规划求概率最大路径(最优路径).代码中有示例,来自李航<统计学习方法> function [Delta,Psi,P,I] = ...

  6. mcmc matlab 人大,mcmc.in.matlab 使用matlab工具完成mcmc(马尔科夫蒙托卡罗)方法的计算 - 下载 - 搜珍网...

    mcmc的matlab实现/ mcmc的matlab实现/mcmc/ mcmc的matlab实现/mcmc/About_MCMC.html mcmc的matlab实现/mcmc/betalpr.m m ...

  7. matlab——自带的隐马尔科夫工具箱的使用

    最近用到HMM,MATALB自带HMM工具箱  了解一下 1.hmmgenerate函数 [SEQ, STATES] = HMMGENERATE(LEN,TRANSITIONS,EMISSIONS) ...

  8. 马尔可夫聚类算法(MCL)

    1.基础 1.1Random Walks 在图中,通过Random Walks处理,可以找到数据在哪里聚集,或者聚簇在哪. 图中的Random Walks是使用马尔可夫链计算求出. 1.2马尔可夫链( ...

  9. m基于隐马尔科夫模型(HMM)的手机用户行为预测(MMUB)算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,广泛应用在语音识别, ...

最新文章

  1. 服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用
  2. android 串口开发_详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印...
  3. “科研女神”颜宁当选美国科学院外籍院士
  4. HTTP协议和HTTPS协议初探
  5. pytorch基础知识整理(五) 优化器
  6. mysql自增id获取失败
  7. python循环输入字符串_Python基础-条件判断、循环、字符串格式化
  8. 某大型IT公司招网络工程师认证试题精选(要求:CCNA或 HCNE以上)
  9. 打开word时总是弹出The resource dll can not be loaded
  10. 图像处理之超像素分割(SLIC)
  11. 程序员如何选择外包平台
  12. firefoxos中打开app
  13. 在微信朋友圈冲浪必备的心灵免疫力
  14. 西班牙建筑中的突起感是什么呀
  15. PHP+JS+HTML 手机下拉加载分页
  16. 深度学习(二)-----算法岗面试题
  17. rpm安装及卸载软件
  18. pycharm配置 自动运行指定脚本
  19. 红黄绿小灯泡标记实现
  20. Unity(三)三维数学和坐标系统

热门文章

  1. 从神话诗歌到奇幻科学的人类探索史·《月亮》·精彩摘录
  2. indesign里怎么打根号_排版中黄金比例、白银比例是什么意思?
  3. Android merge
  4. 梁海云:优秀志愿者风采展示(2022年度)
  5. Android Activity底层启动过程分析
  6. 判断推理之图形推理 1
  7. 震撼!全球超低功耗LED显示屏生产基地现场首播成功!
  8. 曾鸣:未来10年,在潮中戏水还是被大浪抛弃?| 阿里内部干货
  9. JavaWeb day10会话技术
  10. 临界区锁 InitializeCriticalSection()--- EnterCriticalSection()--LeaveCriticalSection()