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

Function calcGauss

EM/EM.py:61–79  ·  view source on GitHub ↗

根据高斯密度函数计算值 依据:“9.3.1 高斯混合模型” 式9.25 注:在公式中y是一个实数,但是在EM算法中(见算法9.2的E步),需要对每个j 都求一次yjk,在本实例中有1000个可观测数据,因此需要计算1000次。考虑到 在E步时进行1000次高斯计算,程序上比较不简洁,因此这里的y是向量,在numpy 的exp中如果exp内部值为向量,则对向量中每个值进行exp,输出仍是向量的形式。 所以使用向量的形式1次计算即可将所有计算结果得出,程序上较为简洁 :param dataSetArr: 可观测数据集

(dataSetArr, mu, sigmod)

Source from the content-addressed store, hash-verified

59 return dataSet
60
61def calcGauss(dataSetArr, mu, sigmod):
62 '''
63 根据高斯密度函数计算值
64 依据:“9.3.1 高斯混合模型” 式9.25
65 注:在公式中y是一个实数,但是在EM算法中(见算法9.2的E步),需要对每个j
66 都求一次yjk,在本实例中有1000个可观测数据,因此需要计算1000次。考虑到
67 在E步时进行1000次高斯计算,程序上比较不简洁,因此这里的y是向量,在numpy
68 的exp中如果exp内部值为向量,则对向量中每个值进行exp,输出仍是向量的形式。
69 所以使用向量的形式1次计算即可将所有计算结果得出,程序上较为简洁
70 :param dataSetArr: 可观测数据集
71 :param mu: 均值
72 :param sigmod: 方差
73 :return: 整个可观测数据集的高斯分布密度(向量形式)
74 '''
75 #计算过程就是依据式9.25写的,没有别的花样
76 result = (1 / (math.sqrt(2 * math.pi) * sigmod)) * \
77 np.exp(-1 * (dataSetArr - mu) * (dataSetArr - mu) / (2 * sigmod**2))
78 #返回结果
79 return result
80
81
82def E_step(dataSetArr, alpha0, mu0, sigmod0, alpha1, mu1, sigmod1):

Callers 1

E_stepFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected