使用此代码:

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

我懂了
tuple index out of range
self.n_features = obs[0].shape[1]

那么,您到底应该通过.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])

编辑:

让我澄清一下,the documentation表示数组的序数必须为:



这几乎表明您为每个样本传递了一个元组,该元组以二进制方式表示存在哪些观察值。但是their example表示相反:
# pack diff and volume for training
X = np.column_stack([diff, volume])

因此造成困惑

最佳答案

高斯HMM函数似乎是针对仅用于多变量排放的HMM问题的,因此要求> 1的排放矢量。当文档中提到“n_features”时,它们不是在表示发射可以表达自己的方式的数目,而是指正交发射向量的数目。

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

对于单变量排放矢量问题,请使用MultinomialHMM。

希望这对希望在不成为HMM的全局权威的前提下使用此工具的其他人澄清了:)

关于python - 对GaussianHMM.fit([X])中的X感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30789921/

10-12 21:42