EM聚类算法matlab实现

博主在研究朴素贝叶斯定理时接触到EM聚类算法,并尝试用MATLAB进行编程实现。然而在初始化参数阶段遇到问题,若初始值偏离过大,则最终结果出现偏差。博主疑惑这是否为算法本身的局限或是自身理解不足,期待专家指导。
摘要由CSDN通过智能技术生成

最近看到了朴素贝叶斯定理,看着看着就看到了em聚类的算法中(K-means聚类的原型)。

动手自己编个程序:

%EM algorithm
clc;
clear;

sigma = 1.5;
miu1 = 3;
miu2 = 7;
N = 1000;
x = zeros(1,N);
for i = 1:N
    if rand>0.5
        x(1,i) = randn*sigma + miu1;
        y(1,i) = randn*sigma + miu1;
    else 
        %sigma = 0.5;
        x(1,i) = randn*sigma + miu2;
        y(1,i) = randn*sigma + miu2;
    end
end

plot(x,y,'o');

k = 2;
%miu = rand(1,k)*40;
miu(1) = 4;
miu(2) = 6;
cov(1) = 2;
cov(2) = 2;
%cov = rand(1,k)*6;
a(1) = 1.5;
a(2) = 1.5;
% expectations = zeros(N,k);
num = [0,0];
n = 1;
for step = 1:10000
    n = 1;
    m = 1;
    x1 = [];
    y1 = [];
    x2 = [];
    y2 = [];
    num = [1 1];
    for i = 1:N
        p1 = exp(-(x(i)-miu(1))*(x(i)-miu(1))/(2*cov(1)*cov(1)))/sqrt((2*pi))*cov(
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AP聚类算法Matlab实现可以参考Frey和Dueck在科学杂志上发表的研究《Clustering by Passing Messages Between Data Points》。该算法使用点对点之间交换信息的方式来聚类数据。具体的实现步骤如下: 1. 初始化相似性矩阵S,其中S(i,j)表示数据点i与数据点j之间的相似性。 2. 初始化责任矩阵R和可用性矩阵A,其中R(i,j)表示数据点i选择数据点j作为其examplar的责任程度,A(i,j)表示数据点i被数据点j选择为其examplar的可用程度。 3. 迭代更新责任矩阵R和可用性矩阵A,直到收敛。更新规则如下: - 更新责任矩阵R:R(i,j) = S(i,j) - max{A(i,k) + S(i,k)},其中k != j。 - 更新可用性矩阵A:A(i,j) = min{0, R(j,j) + sum[max{0, R(k,j)},其中k != i。 4. 根据最终的可用性矩阵A确定每个数据点的examplar。 5. 根据examplar确定每个数据点的聚类。 以上是AP聚类算法的基本步骤,具体的Matlab实现细节可以参考相关的研究论文和代码示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [AP聚类算法(Affinity propagation Clustering Algorithm )](https://blog.csdn.net/weixin_39974409/article/details/116146959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [AP聚类以及matlab实现](https://blog.csdn.net/Rorschach321/article/details/106552546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [机器学习笔记-----AP(affinity propagat)算法讲解及matlab实现](https://blog.csdn.net/weixin_30396699/article/details/97529877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值