gmm聚类python_GMM-实现聚类的代码示例

该博客详细介绍了如何使用Python实现高斯混合模型(GMM)进行数据聚类,包括GMM代码的实现过程,从初始化质心、E-step、M-step到判断收敛的完整流程,并提供了测试代码示例。通过对Matlab代码的转化,读者可以理解GMM聚类的工作原理并在Python环境中应用。

41f3ebaee7b7e30b9e89d92a1eb3094c.png

a67875c04be10b8cba720fce7bdedc1e.png

Matlab 代码:

% GMM code

function varargout = gmm(X, K_or_centroids)

% input X:N-by-D data matrix

% input K_or_centroids: K-by-D centroids

% 阈值

threshold = 1e-15;

% 读取数据维度

[N, D] = size(X);

% 判断输入质心是否为标量

if isscalar(K_or_centroids)

% 是标量,随机选取K个质心

K = K_or_centroids;

rnpm = randperm(N); % 打乱的N个序列

centroids = X(rnpm(:K), :);

else % 矩阵,给出每一类的初始化

K = size(K_or_centroids, );

centroids = K_or_centroids;

end

% 定义模型初值

[pMiu pPi pSigma] = init_params();

Lprev = -inf;

while true

% E-step,估算出概率值

% Px: N-by-K

Px = calc_prob();

% pGamma新的值,样本点所占的权重

% pPi:-by-K pGamma:N-by-K

pGamma = Px ./ repmat(pPi, N, );

% 对pGamma的每一行进行求和,sum(x,):每一行求和

pGamma = pGamma ./ repmat(sum(pGamma, ) , , K);

% M-step

% 每一个组件给予新的值

Nk = sum(pGamma,);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值