Python hmmlearn中的GMMHMM是否在运行时没有任何n_样本大小的bug?

Python hmmlearn中的GMMHMM是否在运行时没有任何n_样本大小的bug?,python,mixture-model,hmmlearn,Python,Mixture Model,Hmmlearn,首先,我的hmmlearn版本是0.3.0b(使用conda安装) 我试图在hmmlearn中实现GMMHMM模型,但我得到: ValueError: n_samples=3 should be >= n_clusters=5 更具体地说,我有一个由4个状态和5个混合高斯(簇)组成的模型,我的输入X变量有形状(20,3),如(n个样本,n个特征)中所述 以下是创建错误的代码: import numpy as np from hmmlearn import hmm size = 30 d

首先,我的hmmlearn版本是0.3.0b(使用conda安装)

我试图在hmmlearn中实现GMMHMM模型,但我得到:

ValueError: n_samples=3 should be >= n_clusters=5
更具体地说,我有一个由4个状态和5个混合高斯(簇)组成的模型,我的输入X变量有
形状(20,3)
,如
(n个样本,n个特征)
中所述

以下是创建错误的代码:

import numpy as np
from hmmlearn import hmm

size = 30
data = np.concatenate((np.random.normal(0,1,size), np.random.normal(5,2,size)))
np.random.shuffle(data)
x = np.reshape(data,(-1,3))

model = hmm.GMMHMM(n_components=4, n_mix=5)
model.fit(x)

有人能找到任何理由吗?或者这是图书馆的一个bug?我找不到实现GMMHMM模型的在线示例。

我也有同样的问题

它似乎希望在一行中包含多个样本,高斯混合将在这些样本上进行训练。即,一个三维数组,其中每行是一个样本数组,每个样本是多元高斯混合特征数组:

[
  [[a b],[a b],[a b],[a b]]
  [[a b],[a b],[a b],[a b]]
  [[a b],[a b],[a b],[a b]]
  [[a b],[a b],[a b],[a b]]
  ...
]
这是因为,当我试图将其重塑为一行多个样本时,我克服了错误。但是,我得到了一个错误,即没有足够的n_样本用于HMM本身的训练,即缺少行

[
  [a a a a a a a a a],[b b b b b b b b b]
]
问题是fit()方法只接受二维数组,而不接受三维数组。所以我无法做到这一点,我不知道HMMGMM中的多元高斯混合应该如何用hmmlearn实现

但由于特征的性质是相同的,我将它们以不同的偏移量一个接一个地堆叠成一个连续的流,并训练一个变量(而不是多变量)的简单高斯混合:


2d概率密度函数中将有2个凸起,而不是单个3d“凸起”,这足以区分不同的输入时间序列。

我也有同样的问题

它似乎希望在一行中包含多个样本,高斯混合将在这些样本上进行训练。即,一个三维数组,其中每行是一个样本数组,每个样本是多元高斯混合特征数组:

[
  [[a b],[a b],[a b],[a b]]
  [[a b],[a b],[a b],[a b]]
  [[a b],[a b],[a b],[a b]]
  [[a b],[a b],[a b],[a b]]
  ...
]
这是因为,当我试图将其重塑为一行多个样本时,我克服了错误。但是,我得到了一个错误,即没有足够的n_样本用于HMM本身的训练,即缺少行

[
  [a a a a a a a a a],[b b b b b b b b b]
]
问题是fit()方法只接受二维数组,而不接受三维数组。所以我无法做到这一点,我不知道HMMGMM中的多元高斯混合应该如何用hmmlearn实现

但由于特征的性质是相同的,我将它们以不同的偏移量一个接一个地堆叠成一个连续的流,并训练一个变量(而不是多变量)的简单高斯混合:

2d概率密度函数中将有2个凸起,而不是单个3d“凸起”,这足以区分不同的输入时间序列