Python 隐马尔可夫模型如何生成概率

Python 隐马尔可夫模型如何生成概率,python,machine-learning,unsupervised-learning,markov,Python,Machine Learning,Unsupervised Learning,Markov,我有很多来自脉搏\心率测量的数据,因此数据在长整数列表中,我有8种状态(尽管数据范围可能远大于1到8,可能是50到140)。 我想要一个算法,可以采取的测量数据,并通过无监督的学习,给我的概率,从一个状态到另一个。 所以我不知道转移矩阵,也不知道如何在测量数据上分配不同的状态。 我只有8个状态,有心率测量的向量,我需要得到从一个状态到所有其他状态的概率。 我不知道如何使用HMM来做,或者它是一种做这件事的方法。几乎任何时间序列数据都可以用HMM建模。应该使用众所周知的Baum-Welch算法从数

我有很多来自脉搏\心率测量的数据,因此数据在长整数列表中,我有8种状态(尽管数据范围可能远大于1到8,可能是50到140)。 我想要一个算法,可以采取的测量数据,并通过无监督的学习,给我的概率,从一个状态到另一个。 所以我不知道转移矩阵,也不知道如何在测量数据上分配不同的状态。 我只有8个状态,有心率测量的向量,我需要得到从一个状态到所有其他状态的概率。
我不知道如何使用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建模(因为它们会导致无限的状态空间),你必须使用连续密度隐马尔可夫模型。同时,具有有限大状态空间的时间序列很快就难以计算(通常使用粒子滤波器等近似方法)。