当前位置: 首页 > news >正文

基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

4.1 EM算法

E步:期望步

M步:最大化步

4.2 GMM模型

5.算法完整程序工程


1.算法运行效果图预览

(完整程序运行后无水印)

2.算法运行软件版本

程序运行配置环境:

人工智能算法python程序运行环境安装步骤整理-CSDN博客

3.部分核心程序

(完整版代码包含部分中文注释和操作步骤视频)

.........................................................................

        for z in range(k):
            err       += (abs(Old_mu[z, 0] - mu[z, 0]) + abs(Old_mu[z, 1] - mu[z, 1]) + abs(Old_mu[z, 2] - mu[z, 2]))  # 计算误差
            err_alpha += abs(Old_alpha[z] - alpha_[z])
            err_cov   += abs(Old_cov[z,0,0] - sigma4_[z,0,0])+abs(Old_cov[z,0,1] - sigma4_[z,0,1])+abs(Old_cov[z,0,2] - sigma4_[z,0,2])+abs(Old_cov[z,1,0] - sigma4_[z,1,0])+abs(Old_cov[z,1,1] - sigma4_[z,1,1])+abs(Old_cov[z,1,2] - sigma4_[z,1,2])+abs(Old_cov[z,2,0] - sigma4_[z,2,0])+abs(Old_cov[z,2,1] - sigma4_[z,2,1])+abs(Old_cov[z,2,2] - sigma4_[z,2,2])

        if (err <= 0.001) and (err_alpha < 0.001):  # 达到精度退出迭代
            print(err, err_alpha)
            break

        Learn_process[i] = err;
        alpha_process[i] = err_alpha;
        cov_process[i]  = err_cov;


    print("observable data:\n", X)  # 输出可观测样本
    order = np.zeros(N)
    color = ['b', 'r', 'y']
    ax = plt.figure().add_subplot(111, projection='3d')
    for i in range(N):
         for j in range(k):
             if excep[i, j] == max(excep[i, :]):
                 order[i] = j  # 选出X[i,:]属于第几个高斯模型
                 probility[i] += alpha_[int(order[i])] * math.exp(-(X[i, :] - mu[j, :]) * sigma.I * np.transpose(X[i, :] - mu[j, :])) / (np.sqrt(np.linalg.det(sigma)) * 2 * np.pi)  # 计算混合高斯分布
                 ax.scatter(X[i, 0], X[i, 1], X[i, 2],c=color[int(order[i])], s=25 ,marker='.')
                 plt.title('classfiy random 3D generated data from R,G,B')
                 ax.set_xlabel('x')
                 ax.set_ylabel('y')
                 ax.set_zlabel('z')


    plt.show()





    plt.plot(Learn_process[2:iter_num]);
    plt.title('Learning process:error')
    plt.xlabel('Iteration numbers')
    plt.ylabel('error')
    plt.show()





    plt.plot(alpha_process[2:iter_num]);
    plt.title('Learning process:alpha')
    plt.xlabel('Iteration numbers')
    plt.ylabel('alpha error')
    plt.show()





    plt.plot(cov_process[2:iter_num]);
    plt.title('Learning process:cov')
    plt.xlabel('Iteration numbers')
    plt.ylabel('cov error')
    plt.show()
0Y_002

4.算法理论概述

       EM期望最大化算法是一种用于含有隐变量(latent variable)的概率模型参数估计的迭代算法。在许多实际问题中,数据的生成过程可能涉及一些无法直接观测到的变量,这些变量被称为隐变量。例如在混合高斯模型(Gaussian Mixture Model,GMM)中,每个数据点具体来自哪个高斯分布就是一个隐变量。EM算法通过交替执行两个步骤:E步(期望步)和M步(最大化步),逐步逼近最优的参数估计。

4.1 EM算法

E步:期望步

M步:最大化步

       这是因为在E步中,我们计算的是在当前参数下关于隐变量的期望,而在M步中,我们通过最大化这个期望来更新参数,使得似然函数单调递增。理论上,当似然函数的变化小于某个阈值时,算法收敛到局部最优解。

4.2 GMM模型

       混合高斯模型(Gaussian Mixture Model,简称 GMM) 是一种概率模型,通过将数据视为由多个高斯分布(正态分布)的加权组合而生成,适用于聚类、密度估计、数据分布建模等场景。相比常见的 K-Means 聚类,混合高斯模型能够捕捉到数据分布的方差差异和协方差结构。

5.算法完整程序工程

OOOOO

OOO

O

相关文章:

  • SP导入模型设置
  • 解决跨域请求的问题(CORS)
  • iOS UIGestureRecgonizer自动化点击埋点
  • XPath路径表达式
  • 文件上传漏洞详细利用流程
  • BambuStudio学习笔记:format格式化输出
  • Linux中是如何进行日志管理的?
  • C语言--简单排序算法(冒泡、选择、插入)
  • 迷你世界脚本出生点接口:Spawnport
  • 论文阅读笔记:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition
  • java在mavenclean之后点击主启动函数,一直显示java找不到符号的解决办法
  • oracle常用参数解析
  • 数据结构篇—栈(stack)
  • 蓝陵科技:以“数字底座”之力,全面布局影视行业工业化
  • 【赵渝强老师】监控Redis
  • Redis100道高频面试题
  • 初阶数据结构习题【7】(3顺序表和链表)—— 21. 合并两个有序链表
  • 浅谈汽车系统电压优缺点分析
  • 2.Deepseek提示语技巧到多场景应用
  • 《AI大模型技术应知应会100篇》No1. 大模型文件格式一篇读懂读全
  • 免费开源的网站系统/媒介星软文平台官网
  • 建设网站目的及功能定位是什么/淘宝关键词热度查询工具
  • 泉州专业建站品牌/衡水seo营销
  • 湛江廉江网站建设/百度seo 优化
  • 动态网站建设步骤/网络营销工具介绍
  • 甘肃省城乡和建设厅网站首页/软文投放平台有哪些