首页 > 编程语言 >EM算法

EM算法

时间:2022-10-24 14:57:29浏览次数:52  
标签:EM qq format self 2f 算法 jj print


# 1,求观测序列的概率
# 2,已知状态序列求观测序列
# 3,已知观测序列求模型参数

# 设状态值概率
# pA=0.6
# pB=0.5

class EM():
def __init__(self):
self.t = 0.6
self.q = 0.5


def E(self, i, j):
pA = (self.t ** i) * ((1 - self.t) ** j)
pB = (self.q ** i) * ((1 - self.q) ** j)

d = pA / (pA + pB)
b = pB / (pA + pB)
# print('选择A的概率:{:.2f},选择B的概率:{:.2f}'.format(d, b))

cd = d * i
ad = d * j
# print('硬币A,正面朝上次数的期望值:{:.1f} 反面:{:.1f}'.format(cd, ad))

cb = b * i
ab = b * j
# print('硬币B,正面朝上次数的期望值:{:.1f} 反面:{:.1f}'.format(cb, ab))

# print('-' * 50)
return cd, ad, cb, ab

def M(self):
qq = 0
tt = 0
jj = 0
cc = 0

td = [[5,5],[9,1],[8,2],[4,6],[7,3]]
for i,j in td:
a, b, c, d = self.E(i, j)
qq += a
tt += b
jj += c
cc += d

print(qq, tt)
print('A正面概率:{:.2f} 反面概率:{:.2f}'.format(qq/(qq+tt), tt/(qq+tt)))
print(jj, cc)
print('B正面概率:{:.2f} 反面概率:{:.2f}'.format(jj/(jj+cc), cc/(jj+cc)))
self.t = round(qq/(qq+tt), 3)
self.q = round(jj/(jj+cc), 3)
print('完')

def run(self):
self.s = None
self.p = None
while 1:
if (self.s == self.t) and (self.p == self.q):
break
else:
self.s = self.t
self.p = self.q
self.M()


EM().run()







def EM1(i, j):
t,q = 0.2,0.7
a = (t**i) * ((1-t)**j)
b = (q**i) * ((1-q)**j)
print('A:{:.2f} B:{:.2f}'.format(a, b))

c = a / (a + b)
d = b / (a + b)
print('使用A概率{:.2f},使用B概率{:.2f}'.format(c, d))

e = c * i
f = c * j
print('{:.2f} {:.2f}'.format(e, f))
print('-'*50)
# g = d * i
# h = d * j
# print(g, h)
t, q = c/10, e/10
# EM1(3, 2)
# EM1(2, 3)
# EM1(1, 4)
# EM1(3, 2)
# EM1(2, 3)

标签:EM,qq,format,self,2f,算法,jj,print
From: https://www.cnblogs.com/lld76/p/16821436.html

相关文章

  • c# async await 的Demo
    如下代码:在运行异步方法:DownloadDocsMainPageAsync()后,后续的代码直接可以运行。    在调用awaitdownloading()后等待运行结果。代码如下:publ......
  • vue笔记 11 createElement、Vue3、Vue.config.productionTip = false/true打包时日记
                  面试了解            ......
  • element日期组件时间范围选择限制
                参考:https://blog.csdn.net/Shids_/article/details/122881216 ......
  • DFA算法C#实现
    ///<summary>///过滤词DFA算法实现///</summary>publicclassForbiddentWordLibrary{///<summary>///用分行过滤词文件来初......
  • 常用限流算法总结
    一、限流是什么?限流,也称流量控制。是指系统在面临高并发,或者大流量请求的情况下,限制新的请求对系统的访问,从而保证系统的稳定性。限流会导致部分用户请求处理不及时或者被......
  • 巡路算法
    比较闲,看了网上的思路后写了一个玩玩publicclassMapManager{privateintmapMaxX=0;privateintmapMaxY=0;privateint[,]mapInfo;//终点......
  • Castle 整合.NET Remoting
    微软以前使用COM/DCOM的技术来处理分布式系统架构,通过Client端的Proxy代理程序来呼叫远程Server机器上的对象。.NETFramework则使用.NETRemoting或WebServices技术来实作......
  • consul报错:Consul service ids must not be empty, must start with a letter 或 Unab
      报类似错误,一般是配置文件没生效或配置有问题造成的,可能是resource目录,没有标记为根目录,解决方法如下: ......
  • IfcAbsorbedDoseMeasure
    IfcAbsorbedDoseMeasure类型定义IfcAbsorbedDoseMeasure是对吸收放射性剂量的测量。通常以灰色(Gy,J/kg)计量。类型:REALIFC2x中的新类型。 EXPRESSSpecificationTY......
  • 贝叶斯过滤算法
    朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类......