我正在使用HMMlearn模块生成具有高斯混合模型的HMM。
问题是我想在将模型拟合到任何数据之前初始化每个混合成分的均值,方差和权重。
我将如何做到这一点?
答案 0 :(得分:2)
每个HMM参数都有一个可用于自定义的字符代码 它的初始化和估计。 EM算法需要一个起点 继续进行,因此在训练之前为每个参数分配一个值 随机或从数据计算。有可能挂钩 这个过程明确提供了一个起点。这样做
- 确保缺少参数的字符代码 init_params然后
- 将参数设置为所需的值。
醇>
以下是一个例子:
model = hmm.GaussianHMM(n_components=3, n_iter=100, init_params="t")
model.startprob_ = np.array([0.6, 0.3, 0.1])
model.means_ = np.array([[0.0, 0.0], [3.0, -3.0], [5.0, 10.0]])
model.covars_ = np.tile(np.identity(2), (3, 1, 1))
初始化GMMHMM
model = hmm.GMMHMM(n_components=3, n_iter=100, init_params="smt")
model.gmms_ = [sklearn.mixture.GMM(),sklearn.mixture.GMM(),sklearn.mixture.GMM()]
GMM本身可以使用其属性以非常类似的方式初始化,并通过在init_params
字符串中提供,应该由构造函数初始化哪些属性。