0

我正在使用 HMMlearn 模块生成具有高斯混合模型的 HMM。

问题是我想在将模型拟合到任何数据之前初始化每个混合分量的均值、方差和权重。

我该怎么做呢?

4

1 回答 1

2

来自HHMlean 文档

每个 HMM 参数都有一个字符代码,可用于自定义其初始化和估计。EM 算法需要一个起点才能继续进行,因此在训练之前,每个参数都被分配了一个随机值或从数据计算的值。可以挂钩到这个过程并明确地提供一个起点。这样做

  1. 确保 init_params 中缺少参数的字符代码,然后
  2. 将参数设置为所需的值。

这是一个例子:

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字符串中提供哪些属性应由构造函数初始化。

于 2016-05-01T18:41:37.160 回答