matlab练习程序(马尔可夫聚类MCL)

栏目: 编程工具 · 发布时间: 5年前

内容简介:本文主要参考:

本文主要参考:

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=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.') 

原始数据:

matlab练习程序(马尔可夫聚类MCL)

聚类后:

matlab练习程序(马尔可夫聚类MCL)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UML基础、案例与应用

UML基础、案例与应用

施穆勒 / 李虎、赵龙刚 / 人民邮电出版社 / 2004-7-1 / 42.00元

本书教读者循序渐进地、系统地学习UML基础知识和应用技术。和前一版相比,本书内容根据UML 2.0进行了补充和更新,随书光盘包含了建模工具Poseidon的试用版。 全书分为三部分24章。第一部分“基础知识”包括第1章到第15章,主要是介绍UML语言的基础知识以及面向对象的概念和思想,还简单介绍了UML在开发过程的应用方法。第二部分“学习案例”包括第16章到第22章,结合实例详细分析了UML的应用......一起来看看 《UML基础、案例与应用》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具