机器学习高斯混合模型(后篇):GMM求解完整代码实现

本文详细介绍了高斯混合模型(GMM)的EM算法求解过程,从一维数据聚类开始,通过Numpy实现GMM的初始化、贡献系数求解、簇参数更新等步骤。通过编写GMM聚类接口,展示了不依赖sklearn的自定义GMM聚类算法,并比较了自实现与sklearn的相似性。文章适合深入理解GMM及EM算法的读者。
摘要由CSDN通过智能技术生成

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!

01

回顾

前面推送中,我们介绍了高斯混合模型(GMM)的聚类原理,以及聚类求解的公式推导,如果您想了解这部分,请参考之前的推送:
机器学习高斯混合模型:聚类原理分析(前篇)
机器学习高斯混合模型(中篇):聚类求解

总结来说,GMM是非常好的聚类利器,它不光能给出样本所属的类别,还能给出属于每个类别的概率,进而转化成得分值,有时所属每个簇的得分值具有重要的意义(意义说明详见之前两篇的推送)。GMM求解的思路本质上是借助最大期望算法的思路来进行求解,关于最大期望算法的原理例子解析,请参考:
机器学习期望最大算法:实例解析

接下来,就到了GMM的EM算法求解的代码实现环节了,如果我们能把一种聚类算法的思路从原理,到公式,再到代码实现,都能走一遍,那么无疑可以表明您对本算法和这一类的算法都有一个全新的理解。手写不掉包代码实现算法的结果,如果能与sklean中的实现基本一致,那么说明才说明您对这个算法正真了解了,在这个编码的过程,将是您对python,Numpy等常用科学计算工具的实践过程,总之意义挺大,锻炼价值也很大。

废话少说,让我们开始GMM模型的EM算法的代码实现之旅吧!

02

GMM的EM求解之数据生成

我们先从一维的数据样本的聚类开始说起,先易后难。首先阐述下GMM的EM求解思路。

  1. 数据准备
    我们借助sklearn的API,生成3堆一维高斯分布的数据,一维在此处是指数据的特征只有一个。首先本次实验导入的所有库包括:
import numpy as np
import numpy.linalg as la
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs 

生成数据的过程如下:

#生成的簇,和对应的分类
#这是sklearn的聚类结果
#下面自己编码GMM实现聚类,看看与sklearn的结果是够一致
x,label = make_blobs(n_samples=150,n_features=1, cent
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值