首页 文章

隐马尔可夫模型蟒蛇

提问于
浏览
1

我有一个粒子随时间的位置的时间序列,我想用这个数据估计两个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?

1 回答

  • 0

    注意事项:我对HMM和这个lib的理解是基于几分钟的谷歌搜索和维基百科 . 那说:

    要训练HMM模型,您需要一些观察样本,每个样本都是一个特征向量 . 例如,在Alice的Wikipedia example中预测当天Bob报告的活动天气 . ) Bob完全有可能在给定的一天给Alice带来多个功能(例如,他做了什么,以及他的装备是什么) .

    那么,要学习/拟合HMM模型,您需要一系列样本,每个样本都是一个特征向量 . 这就是 fit 函数需要二维输入的原因 . 从the docs开始, X 预计将是“类似于数组,形状 (n_samples, n_features) ” . 在您的情况下,粒子的位置是唯一的特征,每个观察都是一个样本 . 所以你的输入应该是一个类似于数组 n_samples, 1 (单列)的数组 . 现在,它可能是形状 1, n_samples (单行,默认情况下做 np.array([1, 2, 3]) ) . 所以只需重塑:

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

相关问题