Bio.HMM.Trainer模块

提供基于训练序列估计参数的训练器。

在实际使用马尔可夫模型解码状态路径之前,应该使用它们来“训练”马尔可夫模型。当提供训练序列和要工作的模型时,这些类将估计模型的参数。

这旨在估计两个参数:

  • a_{kl}--训练数据中从k转换到l的次数。

  • E_{k}(B)-从训练数据中的字母k开始的状态b的排放量。

class Bio.HMM.Trainer.TrainingSequence(emissions, state_path)

基类:object

保存具有排放的训练序列,以及可选的状态路径。

__init__(emissions, state_path)

初始化训练序列。

参数:
  • 发射-包含训练序列中的发射序列的可迭代(例如,元组、列表或序列对象)。

  • STATE_PATH-包含状态序列的可迭代(例如,元组或列表)。如果没有已知的状态路径,那么状态序列应该是一个空的可迭代。

class Bio.HMM.Trainer.AbstractTrainer(markov_model)

基类:object

提供所有培训人员所需的通用功能。

__init__(markov_model)

初始化类。

log_likelihood(probabilities)

计算训练序列的对数似然率。

参数:
  • 概率--当前参数下每个训练序列的概率列表,使用前向算法计算。

estimate_params(transition_counts, emission_counts)

得到过渡和排放的最大似然估计。

参数:
  • Transition_Counts--包含两个状态之间的转换计数总数的字典。

  • Effects_Counts--一个字典,其中包含某个州字母的特定排放字母的排放总数。

然后返回由Durbin等人的公式3.18估计的过渡和排放的最大似然估计值:

a_{kl} = A_{kl} / sum(A_{kl'})
e_{k}(b) = E_{k}(b) / sum(E_{k}(b'))

返回:包含最大似然估计值的过渡和排放字典。

ml_estimator(counts)

计算最大似然估计。

这可以计算过渡和排放的最大可能性。

参数:
  • 计数--每项计数的字典。

有关用于计算的公式的说明,请参见ESTIMATE_PARAMS。

class Bio.HMM.Trainer.BaumWelchTrainer(markov_model)

基类:AbstractTrainer

使用Baum-Welch算法估计参数的训练器。

当隐马尔可夫模型(HMM)的训练序列具有实际状态的未知路径,并且您需要根据观测到的辐射来估计模型参数时,应该使用这些方法。

这使用了Baum-Welch算法,该算法在Baum,L.E.1972中首次描述。不平等。3:1-8这是基于Durbin等人在“Biological Sequence Analysis”中的描述。在第3.3条中

此算法保证收敛到局部最大值,但不一定收敛到全局最大值,因此请谨慎使用!

__init__(markov_model)

初始化教练器。

参数:
  • 马尔可夫模型-我们将为其估计参数的模型。这应该有一些参数和一些初步估计,我们可以根据这些参数进行构建。

train(training_seqs, stopping_criteria, dp_method=ScaledDPAlgorithms)

使用训练序列估计参数。

这方面的算法取自Durbin等人。p64,所以这是一个很好的地方,可以参考正在发生的事情。

参数:
  • Training_seqs--用于估计参数的TrainingSequence对象列表。

  • STOPING_Criteria--一个函数,当传递到对数似然率和阈值的变化时,它将指示我们是否应该停止估计迭代。

  • dp_method--指定我们应该用来计算向前和向后变量的动态编程实现的类实例。默认情况下,我们使用缩放方法。

update_transitions(transition_counts, training_seq, forward_vars, backward_vars, training_seq_prob)

将新训练序列的贡献添加到转换中。

参数:
  • TRANSPONCE_COUNTS--转换的当前计数字典

  • Training_seq--我们正在使用的训练序列

  • FORWARD_VARS--使用FORWARD算法计算的概率。

  • backward_vars--使用反向算法计算的概率。

  • Training_seq_prob-当前序列的概率。

这使用Durbin等人的公式3.20计算A_{kl}(从状态k到状态l的估计转变计数)。

update_emissions(emission_counts, training_seq, forward_vars, backward_vars, training_seq_prob)

添加新训练序列对排放的贡献。

参数:
  • EISTIMATION_COUNTS--排放的当前计数字典

  • Training_seq--我们正在使用的训练序列

  • FORWARD_VARS--使用FORWARD算法计算的概率。

  • backward_vars--使用反向算法计算的概率。

  • Training_seq_prob-当前序列的概率。

这使用Durbin等人的公式3.21计算E_{k}(B)(来自状态k的发射字母b的估计发射概率)。

class Bio.HMM.Trainer.KnownStateTrainer(markov_model)

基类:AbstractTrainer

估计已知状态序列的概率。

当训练示例的状态路径和发射序列都已知时,这应该用于发射和转移概率的直接估计。

__init__(markov_model)

初始化类。

train(training_seqs)

在已知状态路径的情况下估计马尔可夫模型参数。

该训练器要求对于TrainingSequence对象列表中的所有训练序列,状态和发射都是已知的。然后,此培训将计算所有转变和排放的数量,并使用这些数据来估计模型的参数。