高斯混合模型及最大期望算法(EM)聚类

devtools/2024/12/21 22:23:02/

混合高斯分布(Gaussian Mixture Model,GMM)是一种概率模型,用于表示具有多个高斯分布的加权组合的数据集。它被广泛应用于模式识别、聚类分析和密度估计等领域。

定义

混合高斯分布由多个单变量或多变量高斯分布的线性组合组成。数学上,混合高斯模型可以表示为:

p(x) = \sum_{k=1}^K \pi_k \mathcal{N}(x \mid \mu_k, \Sigma_k)

其中:

  • K 是高斯分布的数量。

  • \pi_k 是第 k 个高斯分布的权重系数,且满足 \sum_{k=1}^K \pi_k = 1

  • \mathcal{N}(x \mid \mu_k, \Sigma_k)是第 k 个高斯分布,其均值为 \mu_k ,协方差矩阵为\Sigma_k

参数估计

混合高斯模型的参数通常通过最大期望算法(Expectation-Maximization, EM)来估计。EM算法迭代两个步骤来更新模型参数,直到收敛:

  1. E步:计算每个数据点属于每个高斯成分的概率(责任)。

  2. M步:根据计算得到的概率更新高斯分布的参数(均值、协方差和权重系数)。

应用

混合高斯分布在以下几个方面有广泛的应用:

  1. 聚类分析:GMM可以用于软聚类(每个点属于多个簇的概率)而不仅仅是硬聚类(每个点仅属于一个簇)。

  2. 密度估计:GMM可以用来估计数据的概率密度函数,特别适用于多峰分布的数据。

  3. 模式识别:在图像处理、语音识别等领域,GMM可以用作分类器的一部分。

  4. 异常检测:通过GMM可以识别出分布中不常见的数据点作为异常点。

实例:

使用Python和Scikit-learn库实现混合高斯模型的拟合和预测:

python">import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture# 生成示例数据
np.random.seed(0)
X = np.concatenate([np.random.randn(300, 2) * 0.75 + np.array([5, 5]),np.random.randn(300, 2) * 0.25 + np.array([-5, -5]),np.random.randn(300, 2) * 0.5 + np.array([5, -5])])# 拟合混合高斯模型
gmm = GaussianMixture(n_components=3, random_state=0)
gmm.fit(X)# 预测
labels = gmm.predict(X)# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', s=15)
plt.title('Gaussian Mixture Model Clustering')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()


http://www.ppmy.cn/devtools/144191.html

相关文章

Day9 神经网络的偏导数基础

多变量函数与神经网络 在神经网络中,我们经常遇到多变量函数。这些函数通常描述了网络的输入、权重、偏置与输出之间的关系。例如,一个简单的神经元输出可以表示为: z f ( w 1 x 1 w 2 x 2 … w n x n b ) z f(w_1x_1 w_2x_2 \ldots…

jenkins 出现 Jenkins: 403 No valid crumb was included in the request

文章目录 前言解决方式:1.跨站请求为找保护勾选"代理兼容"2.全局变量或者节点上添加环境变量3.(可选)下载插件 the strict Crumb Issuer plugin4.重启 前言 jenkins运行时间长了,经常出现点了好几次才能构建,然后报了Je…

Leetcode H 指数

算法思想: 这道 H 指数 问题的核心思想是,找出一个最大的整数 h,使得至少有 h 篇论文的引用次数 大于等于 h,同时剩下的论文引用次数 不超过 h。为了实现这个目标,代码采用了以下思路: 1. 排序数组 首先&…

【前端面试】list转树、拍平, 指标,

这个题目涉及的是将一组具有父子关系的扁平数据转换为树形结构,通常称为“树形结构的构建”问题。类似的题目包括: 1. 组织架构转换 给定一个公司的员工列表,每个员工有 id 和 managerId,其中 managerId 表示该员工的上级。任务…

计算机工作流程

分析下面的计算机工作流程: 1.取数a至ACC:PC程序寄存器自增1,变成0(可以理解为PC初始从-1开始自增);接着PC把当前指令的地址给到MAR(地址寄存器);MAR拿到当前地址后&…

超声波传感器

距离 速度(343m/s)*时间/2 代码过程 ①首先进行初始化的工作 初始化包括定时器的初始化(在这里用的是定时器2) GPIO口的初始化 (包括两个GPIO口 一个是TRIG 一个是 ECHO ) ②msp函数 ③定时…

数据结构之二叉搜索树(Binary Search Tree)

数据结构之二叉搜索树(Binary Search Tree) 1. ⼆叉搜索树的概念2. ⼆叉搜索树的性能分析3.⼆叉搜索树的 查,删,插(没有改,因为没有意义会破坏本质)(源码) 1. ⼆叉搜索树…

C语言双向链表

1.思维导图 2.单向循环链表的所有操作 创建 loopLinkPtr create() {loopLinkPtr H(loopLinkPtr)malloc(sizeof(loopLink));if (NULLH){printf("创建失败\n");return NULL;}H->len 0;H->next H;printf("创建成功\n");return H; }输出结果&#xf…