电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python em算法的實現

瀏覽:7日期:2022-07-09 10:19:04

’’’數據集:偽造數據集(兩個高斯分布混合)數據集長度:1000------------------------------運行結果:----------------------------the Parameters set is:alpha0:0.3, mu0:0.7, sigmod0:-2.0, alpha1:0.5, mu1:0.5, sigmod1:1.0----------------------------the Parameters predict is:alpha0:0.4, mu0:0.6, sigmod0:-1.7, alpha1:0.7, mu1:0.7, sigmod1:0.9----------------------------’’’import numpy as npimport randomimport mathimport timedef loadData(mu0, sigma0, mu1, sigma1, alpha0, alpha1): ’’’ 初始化數據集 這里通過服從高斯分布的隨機函數來偽造數據集 :param mu0: 高斯0的均值 :param sigma0: 高斯0的方差 :param mu1: 高斯1的均值 :param sigma1: 高斯1的方差 :param alpha0: 高斯0的系數 :param alpha1: 高斯1的系數 :return: 混合了兩個高斯分布的數據 ’’’ # 定義數據集長度為1000 length = 1000 # 初始化第一個高斯分布,生成數據,數據長度為length * alpha系數,以此來 # 滿足alpha的作用 data0 = np.random.normal(mu0, sigma0, int(length * alpha0)) # 第二個高斯分布的數據 data1 = np.random.normal(mu1, sigma1, int(length * alpha1)) # 初始化總數據集 # 兩個高斯分布的數據混合后會放在該數據集中返回 dataSet = [] # 將第一個數據集的內容添加進去 dataSet.extend(data0) # 添加第二個數據集的數據 dataSet.extend(data1) # 對總的數據集進行打亂(其實不打亂也沒事,只不過打亂一下直觀上讓人感覺已經混合了 # 讀者可以將下面這句話屏蔽以后看看效果是否有差別) random.shuffle(dataSet) #返回偽造好的數據集 return dataSetdef calcGauss(dataSetArr, mu, sigmod): ’’’ 根據高斯密度函數計算值 依據:“9.3.1 高斯混合模型” 式9.25 注:在公式中y是一個實數,但是在EM算法中(見算法9.2的E步),需要對每個j 都求一次yjk,在本實例中有1000個可觀測數據,因此需要計算1000次。考慮到 在E步時進行1000次高斯計算,程序上比較不簡潔,因此這里的y是向量,在numpy 的exp中如果exp內部值為向量,則對向量中每個值進行exp,輸出仍是向量的形式。 所以使用向量的形式1次計算即可將所有計算結果得出,程序上較為簡潔 :param dataSetArr: 可觀測數據集 :param mu: 均值 :param sigmod: 方差 :return: 整個可觀測數據集的高斯分布密度(向量形式) ’’’ # 計算過程就是依據式9.25寫的,沒有別的花樣 result = (1 / (math.sqrt(2*math.pi)*sigmod**2)) * np.exp(-1 * (dataSetArr-mu) * (dataSetArr-mu) / (2*sigmod**2)) # 返回結果 return resultdef E_step(dataSetArr, alpha0, mu0, sigmod0, alpha1, mu1, sigmod1): ’’’ EM算法中的E步 依據當前模型參數,計算分模型k對觀數據y的響應度 :param dataSetArr: 可觀測數據y :param alpha0: 高斯模型0的系數 :param mu0: 高斯模型0的均值 :param sigmod0: 高斯模型0的方差 :param alpha1: 高斯模型1的系數 :param mu1: 高斯模型1的均值 :param sigmod1: 高斯模型1的方差 :return: 兩個模型各自的響應度 ’’’ # 計算y0的響應度 # 先計算模型0的響應度的分子 gamma0 = alpha0 * calcGauss(dataSetArr, mu0, sigmod0) # 模型1響應度的分子 gamma1 = alpha1 * calcGauss(dataSetArr, mu1, sigmod1) # 兩者相加為E步中的分布 sum = gamma0 + gamma1 # 各自相除,得到兩個模型的響應度 gamma0 = gamma0 / sum gamma1 = gamma1 / sum # 返回兩個模型響應度 return gamma0, gamma1def M_step(muo, mu1, gamma0, gamma1, dataSetArr): # 依據算法9.2計算各個值 # 這里沒什么花樣,對照書本公式看看這里就好了 mu0_new = np.dot(gamma0, dataSetArr) / np.sum(gamma0) mu1_new = np.dot(gamma1, dataSetArr) / np.sum(gamma1) sigmod0_new = math.sqrt(np.dot(gamma0, (dataSetArr - muo)**2) / np.sum(gamma0)) sigmod1_new = math.sqrt(np.dot(gamma1, (dataSetArr - mu1)**2) / np.sum(gamma1)) alpha0_new = np.sum(gamma0) / len(gamma0) alpha1_new = np.sum(gamma1) / len(gamma1) # 將更新的值返回 return mu0_new, mu1_new, sigmod0_new, sigmod1_new, alpha0_new, alpha1_newdef EM_Train(dataSetList, iter=500): ’’’ 根據EM算法進行參數估計 算法依據“9.3.2 高斯混合模型參數估計的EM算法” 算法9.2 :param dataSetList:數據集(可觀測數據) :param iter: 迭代次數 :return: 估計的參數 ’’’ # 將可觀測數據y轉換為數組形式,主要是為了方便后續運算 dataSetArr = np.array(dataSetList) # 步驟1:對參數取初值,開始迭代 alpha0 = 0.5 mu0 = 0 sigmod0 = 1 alpha1 = 0.5 mu1 = 1 sigmod1 = 1 # 開始迭代 step = 0 while (step < iter): # 每次進入一次迭代后迭代次數加1 step += 1 # 步驟2:E步:依據當前模型參數,計算分模型k對觀測數據y的響應度 gamma0, gamma1 = E_step(dataSetArr, alpha0, mu0, sigmod0, alpha1, mu1, sigmod1) # 步驟3:M步 mu0, mu1, sigmod0, sigmod1, alpha0, alpha1 = M_step(mu0, mu1, gamma0, gamma1, dataSetArr) # 迭代結束后將更新后的各參數返回 return alpha0, mu0, sigmod0, alpha1, mu1, sigmod1if __name__ == ’__main__’: start = time.time() # 設置兩個高斯模型進行混合,這里是初始化兩個模型各自的參數 # 見“9.3 EM算法在高斯混合模型學習中的應用” # alpha是“9.3.1 高斯混合模型” 定義9.2中的系數α # mu0是均值μ # sigmod是方差σ # 在設置上兩個alpha的和必須為1,其他沒有什么具體要求,符合高斯定義就可以 alpha0 = 0.3 # 系數α mu0 = -2 # 均值μ sigmod0 = 0.5 # 方差σ alpha1 = 0.7 # 系數α mu1 = 0.5 # 均值μ sigmod1 = 1 # 方差σ # 初始化數據集 dataSetList = loadData(mu0, sigmod0, mu1, sigmod1, alpha0, alpha1) #打印設置的參數 print(’---------------------------’) print(’the Parameters set is:’) print(’alpha0:%.1f, mu0:%.1f, sigmod0:%.1f, alpha1:%.1f, mu1:%.1f, sigmod1:%.1f’ % ( alpha0, alpha1, mu0, mu1, sigmod0, sigmod1 )) # 開始EM算法,進行參數估計 alpha0, mu0, sigmod0, alpha1, mu1, sigmod1 = EM_Train(dataSetList) # 打印參數預測結果 print(’----------------------------’) print(’the Parameters predict is:’) print(’alpha0:%.1f, mu0:%.1f, sigmod0:%.1f, alpha1:%.1f, mu1:%.1f, sigmod1:%.1f’ % ( alpha0, alpha1, mu0, mu1, sigmod0, sigmod1 )) # 打印時間 print(’----------------------------’) print(’time span:’, time.time() - start)

以上就是python em算法的實現的詳細內容,更多關于python em算法的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 北京软件开发_软件开发公司_北京软件公司-北京宜天信达软件开发公司 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 联系我们-腾龙公司上分客服微信19116098882 | 拉伸膜,PE缠绕膜,打包带,封箱胶带,包装膜厂家-东莞宏展包装 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 北京公寓出租网-北京酒店式公寓出租平台 | 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 新能源汽车教学设备厂家报价[汽车教学设备运营18年]-恒信教具 | 视频直播 -摄影摄像-视频拍摄-直播分发 | 广州展览设计公司_展台设计搭建_展位设计装修公司-众派展览装饰 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 生物除臭剂-除味剂-植物-污水除臭剂厂家-携葵环保有限公司 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 颚式破碎机,圆锥破碎机,制砂机-新乡市德诚机电制造有限公司 | 蒸汽吸附分析仪-进口水分活度仪|康宝百科 | 昊宇水工|河北昊宇水工机械工程有限公司 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 液压中心架,数控中心架,自定心中心架-烟台恒阳机电设计有限公司 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 创绿家招商加盟网-除甲醛加盟-甲醛治理加盟-室内除甲醛加盟-创绿家招商官网 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 |