python - 隐马尔可夫模型 python

标签 python machine-learning hmmlearn

我有一个粒子位置随时间变化的时间序列,我想使用这些数据估计两个 HMM 的模型参数(一个用于 x 轴,另一个用于 y 轴)。我正在使用 hmmlearn 库,但是,我不清楚应该如何进行。在教程中,它指出这是使用该库的第三种方式,但是,当我使用如下代码时:

remodel = hmm.GaussianHMM(n_components=3, covariance_type="full", n_iter=100)
remodel.fit(X)  
Z2 = remodel.predict(X) 

X 是 x 轴值的列表,它返回

ValueError: Expected 2D array, got 1D array instead

我应该在数据中添加什么才能将其转换为 2D?

最佳答案

买者自负:我对 HMM 和这个库的理解是基于几分钟的谷歌搜索和维基百科。也就是说:

要训练 HMM 模型,您需要大量观察样本,每个样本都是一个特征向量。例如,在 Wikipedia example爱丽丝根据鲍勃每天所做的事情预测鲍勃家的天气,爱丽丝获得了许多样本(鲍勃每天告诉她的内容),每个样本都有一个特征(鲍勃当天报告的事件)。鲍勃完全有可能为爱丽丝提供某一天的多个特征(例如,他做了什么,以及他的衣服是什么)。

为了学习/拟合 HMM 模型,您应该需要一系列样本,每个样本都是一个特征向量。这就是为什么 fit 函数需要二维输入。来自 the docsX 预计为“类似数组,形状(n_samples, n_features)”。在您的情况下,粒子的位置是唯一的特征,每个观察结果都是一个样本。因此,您的输入应该是形状为 n_samples, 1 的类似数组(单列)。现在,它的形状可能是 1, n_samples (单行,默认执行诸如 np.array([1, 2, 3]) 之类的操作)。所以只需 reshape :

remodel.fit(X.reshape(-1, 1))

关于python - 隐马尔可夫模型 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51577149/

相关文章:

python - 如何在 tk.Canvas 上定位形状和文本以免它们被切断?

python - 使用opencv+picamera stream IO用树莓派抓取视频

python - 在 Django 脆皮表单 form_action 中使用 pk 参数

machine-learning - K 最近邻算法

python - 如何通过 'information gain' 获得 xgboost 中的特征重要性?

python - 为 python hmmlearn 包编译 C 代码时出错

python - 使用多个条件对列表列表进行排序 (Python)

python - 包含 NaN python 的数据集中的 argmin

python - 无法在 Python 3 中安装 hmmlearn

python - 将数据拟合到 hmm.MultinomialHMM