首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐马尔可夫模型python

隐马尔可夫模型python
EN

Stack Overflow用户
提问于 2018-07-29 12:12:30
回答 2查看 616关注 0票数 1

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

代码语言:javascript
复制
remodel = hmm.GaussianHMM(n_components=3, covariance_type="full", n_iter=100)
remodel.fit(X)  
Z2 = remodel.predict(X) 

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

代码语言:javascript
复制
ValueError: Expected 2D array, got 1D array instead

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

EN

回答 2

Stack Overflow用户

发布于 2018-07-29 13:47:23

注意:我对HMM和这个库的理解是基于几分钟的谷歌搜索和维基百科。这就是说:

要训练HMM模型,您需要许多观察样本,每个样本都是一个特征向量。例如,在爱丽丝的Wikipedia example中,根据鲍勃每天所做的事情预测鲍勃家里的天气,爱丽丝得到了许多样本(鲍勃每天告诉她的),每个样本都有一个特征(鲍勃当天报告的活动)。Bob完全有可能在给定的一天内为Alice提供多种功能(例如,他做了什么,他的服装是什么)。

因此,要学习/拟合HMM模型,您应该需要一系列样本,每个样本都是一个特征向量。这就是fit函数需要二维输入的原因。在the docs中,预计X将是“类似数组的形状(n_samples, n_features)”。在您的例子中,粒子的位置是唯一的特征,每个观察值都是一个样本。因此,您的输入应该是一个类似数组的形状n_samples, 1 (单列)。现在,它大概是shape 1, n_samples (单行,执行类似np.array([1, 2, 3])的操作的默认值)。所以只要重塑一下:

代码语言:javascript
复制
remodel.fit(X.reshape(-1, 1))
票数 0
EN

Stack Overflow用户

发布于 2020-08-14 21:02:40

对我来说,reshape方法不起作用。我用的是numpy的np.column_stack。我建议你在拟合模型之前插入X = np.column_stack([X[:]]),它应该能解决问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51577149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档