在GaussianHMM.fit([X])中对X感到困惑

Bro*_*oks 6 python hidden-markov-models scikit-learn

使用此代码:

X = numpy.array(range(0,5))
model = GaussianHMM(n_components=3,covariance_type='full', n_iter=1000)
model.fit([X])
Run Code Online (Sandbox Code Playgroud)

我明白了

tuple index out of range 
self.n_features = obs[0].shape[1]
Run Code Online (Sandbox Code Playgroud)

那么你应该准确传递.fit()的是什么?元组中隐藏的状态和排放?如果是这样的话?文档不太有用.

我注意到它喜欢传递元组,因为这不会给出错误:

X = numpy.column_stack([range(0,5),range(0,5)])
model = GaussianHMM(n_components=3,covariance_type='full', n_iter=1000)
model.fit([X])
Run Code Online (Sandbox Code Playgroud)

编辑:

让我澄清一下,文档表明数组的正常性必须是:

类似阵列的观察序列列表(形状(n_i,n_features)).

这几乎表明您为每个样本传递一个元组,以二进制方式指示哪些观察结果存在.然而他们的例子表明不是:

# pack diff and volume for training
X = np.column_stack([diff, volume])
Run Code Online (Sandbox Code Playgroud)

因此混乱

Bro*_*oks 1

GaussianHMM 函数似乎适用于仅多元发射 HMM 问题,因此要求发射向量 >1。当文档提到“n_features”时,它们并不是指发射可以表达自身的方式数量,而是指正交发射向量的数量。

因此,“特征”(正交发射向量)不应与“符号”混淆,用 sklearn 的说法(据我所知,这可能与更大的 hmm 社区共享),指的是系统的实际唯一值能够发射。

对于单变量发射向量问题,请使用 MultinomialHMM。

希望这对那些想要使用这些东西而又不想成为世界上最重要的 HMM 权威的人来说是澄清的:)