本文整理汇总了Python中hmm.HMM.emit方法的典型用法代码示例。如果您正苦于以下问题:Python HMM.emit方法的具体用法?Python HMM.emit怎么用?Python HMM.emit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类hmm.HMM
的用法示例。
在下文中一共展示了HMM.emit方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from hmm import HMM [as 别名]
# 或者: from hmm.HMM import emit [as 别名]
def main():
run_data = {}
run_id = 0
scale = 0.5
emissions_normal = { 1: Normal(0, 2.0 * scale),
2: Normal(3.5, 3.0 * scale),
3: Normal(6.5, 1.0 * scale) }
emissions_laplace = { 1: Laplace(0, 2.0 * scale),
2: Laplace(3.5, 3.0 * scale),
3: Laplace(6.5, 1.0 * scale) }
emission_spec = emissions_normal
dists = [Normal(max_sigma = 6.0) for n in range(3)]
num_state_reps = 50
num_emission_reps = 4
num_gamma_init_reps = 4
num_blocks = [1, 2, 5, 10, 20, 50]
verbose = False
graphics_on = False
total_work = (num_state_reps * num_emission_reps *
2 * num_gamma_init_reps * len(num_blocks))
work = 0
for state_rep in range(num_state_reps):
print 'State repetition %d' % state_rep
# Generate HMM states
while True:
model = HMM([('Start', (1,), (1.0,)),
(1, (1,2,3), (0.98, 0.02, 0.0)),
(2, (1,2,3), (0.02, 0.95, 0.03)),
(3, (1,2,3,'End'), (0.03, 0.03, 0.93, 0.01))],
emission_spec)
model.simulate()
num_data = len(model.state_vec)
if num_data < 5000 and num_data > 100: break
counts = {}
for state in model.state_vec:
if not state in counts:
counts[state] = 0
counts[state] += 1
if verbose: print 'Counts: %s' % str(counts)
# Generate shuffled indices for repeatable shuffling
shuffling = np.arange(num_data)
np.random.shuffle(shuffling)
for emission_rep in range(num_emission_reps):
if verbose: print 'Emission repetition %d' % emission_rep
model.emit()
for shuffled in [False, True]:
if verbose: print 'Shuffling HMM run: %s' % str(shuffled)
states = np.array(model.state_vec)
emissions = np.array(model.emission_vec)
if shuffled:
states = states[shuffling]
emissions = emissions[shuffling]
for num_block in num_blocks:
if verbose: print 'Blocks: %d' % num_block
blocks = np.array_split(np.arange(num_data), num_block)
for gamma_rep in range(num_gamma_init_reps):
if verbose: print 'Initial gamma seed: %d' % gamma_rep
init_gamma = np.array(states) - 1
run_id += 1
this_run = {}
this_run['num data'] = num_data
this_run['state rep'] = state_rep
this_run['emission rep'] = emission_rep
this_run['shuffled'] = shuffled
this_run['blocks'] = num_block
this_run['gamma init rep'] = gamma_rep
start_time = time.clock()
results = em(emissions,
dists,
blocks = blocks,
gamma_seed = gamma_rep,
init_gamma = init_gamma,
count_restart = 0.0)
pi = results['pi']
dists = results['dists']
reps = results['reps']
conv = results['converged']
run_time = time.clock() - start_time
this_run['run time'] = run_time
this_run['reps'] = reps
conv_status = conv and 'converged' or 'not converged'
this_run['convergence'] = conv_status
print 'Reps: %d (%s)' % (reps, conv_status)
#.........这里部分代码省略.........