ai讲师人工智能讲师叶梓《人工智能概念入门》机器学习深度学习讲师-17

课件为人工智能讲师叶梓人工智能基础课程之一,接上一篇,更多课程,及老师资料可点击 个人主页​​​​​​​

 

(人工智能基础课件34-36页)

EM迭代概述

  • EM 的具体过程:

    1. 先根据假定的参数来计算隐藏变量的分布;
    2. 并根据隐藏变量的分布来更新参数的期望;
    3. 如此迭代,直到收敛。

 

Python实现的EM

  1. #coding:gbk
  2. import math
  3. import copy
  4. import numpy as np
  5. import matplotlib.pyplot as plt
  6. isdebug = True
  7. def ini_data(Sigma,Mu1,Mu2,k,N):
  8.     global X
  9.     global Mu
  10.     global Expectations
  11.     X = np.zeros((1,N))
  12.     Mu = np.random.random(2)
  13.     Expectations = np.zeros((N,k))
  14.     for i in range(0,N):
  15.         if np.random.random(1) > 0.5:
  16.             X[0,i] = np.random.normal()*Sigma + Mu1
  17.         else:
  18.             X[0,i] = np.random.normal()*Sigma + Mu2
  19.     if isdebug:
  20.         print("***********")
  21.         print(u"初始观测数据X:")
  22.         print(X)
  23. # EM算法:步骤1,计算E[zij]
  24. def e_step(Sigma,k,N):
  25.     global Expectations
  26.     global Mu
  27.     global X
  28.     for i in range(0,N):
  29.         Denom = 0
  30.         for j in range(0,k):
  31.             Denom += math.exp((-1/(2*(float(Sigma**2))))*(float(X[0,i]-Mu[j]))**2)
  32.         for j in range(0,k):
  33.             Numer = math.exp((-1/(2*(float(Sigma**2))))*(float(X[0,i]-Mu[j]))**2)
  34.             Expectations[i,j] = Numer / Denom
  35.     if isdebug:
  36.         print("***********")
  37.         print(u"隐藏变量E(Z):")
  38.         print(Expectations)
  39. def m_step(k,N):
  40.     global Expectations
  41.     global X
  42.     for j in range(0,k):
  43.         Numer = 0
  44.         Denom = 0
  45.         for i in range(0,N):
  46.             Numer += Expectations[i,j]*X[0,i]
  47.             Denom +=Expectations[i,j]
  48.         Mu[j] = Numer / Denom
  49. def run(Sigma,Mu1,Mu2,k,N,iter_num,Epsilon):
  50.     ini_data(Sigma,Mu1,Mu2,k,N)
  51.     print(u"初始<u1,u2>:", Mu)
  52.     for i in range(iter_num):
  53.         Old_Mu = copy.deepcopy(Mu)
  54.         e_step(Sigma,k,N)
  55.         m_step(k,N)
  56.         print(i,Mu)
  57.         if sum(abs(Mu-Old_Mu)) < Epsilon:
  58.             break
  59.             
  60. if __name__ == '__main__':
  61.    run(6,40,20,2,1000,1000,0.0001)
  62.    plt.hist(X[0,:],50)
  63.    plt.show()

 

(未完,下一篇继续)课件为人工智能讲师叶梓人工智能基础课程之一,接上一篇,更多课程,及老师资料可点击 个人主页

 

由于小编专业能力有限,无法将老师课件编辑成文章。供一定基础的同学将系列课件下载整理

————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能大模型讲师培训咨询叶梓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值