Bio. HM.Trainer模块
提供根据训练序列估计参数的培训师。
这些应该在实际使用马尔可夫模型解码状态路径之前用于“训练”马尔可夫模型。当提供训练序列和模型时,这些类将估计模型的参数。
这旨在估计两个参数:
a_{kl} --训练数据中从k到l的转换次数。
e_{k}(b)--训练数据中字母k起状态b的排放数量。
- class Bio.HMM.Trainer.TrainingSequence(emissions, state_path)
基类:
object
保持具有发射的训练序列和可选的状态路径。
- __init__(emissions, state_path)
初始化训练序列。
- 论点:
排放-可迭代(例如,数组、列表或Seq对象)包含训练序列中的发射序列。
状态_路径-可迭代对象(例如,数组或列表)包含状态序列。如果没有已知的状态路径,那么状态序列应该是空的可迭代对象。
- __firstlineno__ = 38
- __static_attributes__ = ('emissions', 'states')
- class Bio.HMM.Trainer.AbstractTrainer(markov_model)
基类:
object
提供所有培训师所需的通用功能。
- __init__(markov_model)
初始化课程。
- log_likelihood(probabilities)
计算训练序列的日志可能性。
- 论点:
概率--当前参数下每个训练序列的概率列表,使用前向算法计算。
- estimate_params(transition_counts, emission_counts)
获得转变和排放的最大可能性估计。
- 论点:
transition_counts --两个状态之间转换的总计数字典。
emissions_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了解计算所用公式的描述。
- __firstlineno__ = 58
- __static_attributes__ = ('_markov_model',)
- class Bio.HMM.Trainer.BaumWelchTrainer(markov_model)
-
使用鲍姆-韦尔奇算法估计参数的训练器。
当HMM的训练序列具有未知的实际状态路径时,应该使用这些方法,并且您需要从观察到的排放中估计模型参数。
这使用Baum-Welch算法,首先在Baum,L.E. 1972.不等式3:1-8这是基于Durbin等人在第3.3节中的“生物序列分析”中的描述。
该算法保证收敛到局部最大值,但不一定收敛到全局最大值,因此请小心使用!
- __init__(markov_model)
初始化培训师。
- 论点:
markov_mode-我们要估计参数的模型。这应该包含一些初步估计的参数,我们可以根据这些参数进行构建。
- train(training_seqs, stopping_criteria, dp_method=ScaledDPAlgorithms)
使用训练序列估计参数。
该算法取自Durbin et al. p64,因此这是一个关于正在发生的事情的参考的好地方。
- 论点:
training_seqs --用于估计参数的TrainingSequence对象列表。
stoping_criteria --一个函数,当传递日志可能性和阈值的变化时,将指示我们是否应该停止估计迭代。
dev_system-一个类实例,指定我们应该用来计算向前和向后变量的动态编程实现。默认情况下,我们使用缩放方法。
- update_transitions(transition_counts, training_seq, forward_vars, backward_vars, training_seq_prob)
将新训练序列的贡献添加到过渡中。
- 论点:
transition_counts --转换当前计数的字典
training_seq --我们正在使用的训练序列
forward_vars --使用前向算法计算的概率。
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)
将新训练序列的贡献添加到排放中。
- 论点:
emission_counts --当前排放计数的字典
training_seq --我们正在使用的训练序列
forward_vars --使用前向算法计算的概率。
backward_vars --使用向后算法计算的概率。
training_seq_prob -当前序列的概率。
这使用Durbin等人中的公式3.21计算E_{k}(b)(来自状态k的排放字母b的估计排放概率)
- __annotations__ = {}
- __firstlineno__ = 160
- __static_attributes__ = ()
- class Bio.HMM.Trainer.KnownStateTrainer(markov_model)
-
使用已知状态序列估计概率。
当训练示例的状态路径和发射序列都已知时,这应该用于直接估计发射和转移概率。
- __init__(markov_model)
初始化课程。
- train(training_seqs)
使用已知状态路径估计马尔科夫模型参数。
此训练器要求TrainingSequence对象列表中所有训练序列的状态和发射都是已知的。然后,此训练将计算所有转变和排放,并使用此来估计模型的参数。
- __annotations__ = {}
- __firstlineno__ = 358
- __static_attributes__ = ()