MCPcopy Create free account
hub / github.com/Dod-o/Statistical-Learning-Method_Code / EM_Train

Function EM_Train

EM/EM.py:126–153  ·  view source on GitHub ↗

根据EM算法进行参数估计 算法依据“9.3.2 高斯混合模型参数估计的EM算法” 算法9.2 :param dataSetList:数据集(可观测数据) :param iter: 迭代次数 :return: 估计的参数

(dataSetList, iter = 500)

Source from the content-addressed store, hash-verified

124
125
126def EM_Train(dataSetList, iter = 500):
127 '''
128 根据EM算法进行参数估计
129 算法依据“9.3.2 高斯混合模型参数估计的EM算法” 算法9.2
130 :param dataSetList:数据集(可观测数据)
131 :param iter: 迭代次数
132 :return: 估计的参数
133 '''
134 #将可观测数据y转换为数组形式,主要是为了方便后续运算
135 dataSetArr = np.array(dataSetList)
136
137 #步骤1:对参数取初值,开始迭代
138 alpha0 = 0.5; mu0 = 0; sigmod0 = 1
139 alpha1 = 0.5; mu1 = 1; sigmod1 = 1
140
141 #开始迭代
142 step = 0
143 while (step < iter):
144 #每次进入一次迭代后迭代次数加1
145 step += 1
146 #步骤2:E步:依据当前模型参数,计算分模型k对观测数据y的响应度
147 gamma0, gamma1 = E_step(dataSetArr, alpha0, mu0, sigmod0, alpha1, mu1, sigmod1)
148 #步骤3:M步
149 mu0, mu1, sigmod0, sigmod1, alpha0, alpha1 = \
150 M_step(mu0, mu1, gamma0, gamma1, dataSetArr)
151
152 #迭代结束后将更新后的各参数返回
153 return alpha0, mu0, sigmod0, alpha1, mu1, sigmod1
154
155if __name__ == '__main__':
156 start = time.time()

Callers 1

EM.pyFile · 0.85

Calls 2

E_stepFunction · 0.85
M_stepFunction · 0.85

Tested by

no test coverage detected