zea*_*eal 2 python hidden-markov-models supervised-learning hmmlearn
我相信我理解 HMM 的核心。通过 HMM,我们解决了评估(发出的 seq 的概率)、解码(最可能的隐藏 seq)和学习问题(从观察到的发射 seq 集中学习转换和发射概率矩阵)。
我的问题与学习问题有关。我有发射序列,但每个序列也有相关的特征(意味着隐藏状态值,但隐藏状态的数量未知)。与 HMM 的学习问题一样,我们估计隐藏序列(大小和概率矩阵),为此我们只需要发射序列(如果事先未知,则可以优化隐藏序列的大小)。
我正在使用 HMM库进行计算。当然,它没有我想要的选项。
import numpy as np
import pandas as pd
from hmmlearn import hmm
filenames = [f for f in os.listdir(dir_path) if '.csv' in f.lower()]
d1 = pd.read_csv(dir_path + filenames[0]).as_matrix() # Shape = [m, 3] => first two column is featute and last is the emission-state
d2 = pd.read_csv(dir_path + filenames[1]).as_matrix() # Shape = [m, 3]
##
remodel = hmm.GaussianHMM(n_components=4, covariance_type="full", n_iter=100)
remodel.fit(d1[:, 0:2]) # Problem would have been solved if there was supervised option to pass the states as well
pred_1 = remodel.predict(d1[:, 0:2])
true_1 = d1[:, -1] # Last column is state of the feature in 1, 2 column.
pred_2 = remodel.predict(d2[:, 0:2])
true_2 = d2[:, -1]
Run Code Online (Sandbox Code Playgroud)
有没有办法在 HMM 中进行监督学习,如果有的话怎么做?如果不能的话我还能用 HMM 解决我的问题吗?如果可以的话怎么办?
hmmlearn不实现监督学习(hmmlearn#109)。
seqlearn库实现了监督 HMM,但似乎没有实现 GMM。
然而,石榴库似乎用高斯混合模型实现了有监督的隐马尔可夫模型。像这样的东西:
import pomegranate as pg
X = ...
y = ...
distribution = pg.MultivariateGaussianDistribution
model = pg.HiddenMarkovModel.from_samples(distribution, n_components=5, X=X, labels=y, algorithm='labeled')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3564 次 |
| 最近记录: |