Python 隐马尔可夫模型如何生成概率
我有很多来自脉搏\心率测量的数据,因此数据在长整数列表中,我有8种状态(尽管数据范围可能远大于1到8,可能是50到140)。 我想要一个算法,可以采取的测量数据,并通过无监督的学习,给我的概率,从一个状态到另一个。 所以我不知道转移矩阵,也不知道如何在测量数据上分配不同的状态。 我只有8个状态,有心率测量的向量,我需要得到从一个状态到所有其他状态的概率。Python 隐马尔可夫模型如何生成概率,python,machine-learning,unsupervised-learning,markov,Python,Machine Learning,Unsupervised Learning,Markov,我有很多来自脉搏\心率测量的数据,因此数据在长整数列表中,我有8种状态(尽管数据范围可能远大于1到8,可能是50到140)。 我想要一个算法,可以采取的测量数据,并通过无监督的学习,给我的概率,从一个状态到另一个。 所以我不知道转移矩阵,也不知道如何在测量数据上分配不同的状态。 我只有8个状态,有心率测量的向量,我需要得到从一个状态到所有其他状态的概率。 我不知道如何使用HMM来做,或者它是一种做这件事的方法。几乎任何时间序列数据都可以用HMM建模。应该使用众所周知的Baum-Welch算法从数
我不知道如何使用HMM来做,或者它是一种做这件事的方法。几乎任何时间序列数据都可以用HMM建模。应该使用众所周知的Baum-Welch算法从数据中估计转移矩阵。来自的简单教程应该给你一些提示 你听说过吗 这是一种基于逆协方差的聚类 多元时间序列数据。该算法可以帮助您使用心率测量(和许多其他数据),并使用无监督的方法来识别不同的状态。此算法非常好,因为您可以指定两个关键的调优参数:
集群的数量:数据中预期状态的数量。在本例中,您有8个观察到的状态。这将使算法的训练更加准确
beta
:切换惩罚。您可以控制算法从一种状态切换到另一种状态的难易程度。如果你对你的问题有很好的了解,这可能是直截了当的,或者,如果不是,你可能会尝试并犯错fname = "bar_shaul_data.txt"
ticc = TICC(window_size=1, number_of_clusters=8, lambda_parameter=11e-2, beta=600, maxIters=100, threshold=2e-5,
write_out_file=False, prefix_string="output_folder/", num_proc=1)
(cluster_assignment, cluster_MRFs) = ticc.fit(input_file=fname)
print(cluster_assignment)
np.savetxt('Results.txt', cluster_assignment, fmt='%d', delimiter=',')
更多文档可在上获得
免责声明:我是图书馆的贡献者 你能说得更具体些吗?举个例子会很有帮助,所以你有8个已知状态(obversable?),而隐藏状态是50-140?或者是另一种方式?我发现的HMM算法(用于python)计算了获得特定序列的概率,但我需要的是计算当所有序列都给定时,从一种状态到另一种状态的概率。我有8种状态(不是可观察的-8种情绪),它们是隐藏状态和心率数据,我想说的是,数据(心率序列)中有8种隐藏状态,你可以通过知道人的心率来理解他有什么样的情绪。因此,我想知道,根据我收集的数据,从一个隐藏状态移动到另一个隐藏状态的问题是什么。这不完全正确,连续时间序列(例如心跳/时间单位是连续的)不容易用HMM建模(因为它们会导致无限的状态空间),你必须使用连续密度隐马尔可夫模型。同时,具有有限大状态空间的时间序列很快就难以计算(通常使用粒子滤波器等近似方法)。