• 大小: 32.3MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-07
  • 语言: Python
  • 标签: hmm  python  机器学习  

资源简介

用python实现的Hmm,有详细的代码注解,对Hmm感兴趣的同学值得下载学习

资源截图

代码片段和文件信息

# !/usr/bin/python
# -*- coding:utf-8 -*-

import math
import matplotlib.pyplot as plt
import numpy as np
import codecs
import random

infinite = float(-2**31)


def log_normalize(a):
    s = 0
    for x in a:
        s += x
    if s == 0:
        print “Error..from log_normalize.“
        return
    s = math.log(s)
    for i in range(len(a)):
        if a[i] == 0:
            a[i] = infinite
        else:
            a[i] = math.log(a[i]) - s


def log_sum(a):
    if not a:   # a为空
        return infinite
    m = max(a)
    s = 0
    for t in a:
        s += math.exp(t-m)
    return m + math.log(s)


def calc_alpha(pi A B o alpha):
    for i in range(4):
        alpha[0][i] = pi[i] + B[i][ord(o[0])]
    T = len(o)
    temp = [0 for i in range(4)]
    del i
    for t in range(1 T):
        for i in range(4):
            for j in range(4):
                temp[j] = (alpha[t-1][j] + A[j][i])
            alpha[t][i] = log_sum(temp)
            alpha[t][i] += B[i][ord(o[t])]


def calc_beta(pi A B o beta):
    T = len(o)
    for i in range(4):
        beta[T-1][i] = 1
    temp = [0 for i in range(4)]
    del i
    for t in range(T-2 -1 -1):
        for i in range(4):
            beta[t][i] = 0
            for j in range(4):
                temp[j] = A[i][j] + B[j][ord(o[t+1])] + beta[t+1][j]
            beta[t][i] += log_sum(temp)


def calc_gamma(alpha beta gamma):
    for t in range(len(alpha)):
        for i in range(4):
            gamma[t][i] = alpha[t][i] + beta[t][i]
        s = log_sum(gamma[t])
        for i in range(4):
            gamma[t][i] -= s


def calc_ksi(alpha beta A B o ksi):
    T = len(alpha)
    temp = [0 for x in range(16)]
    for t in range(T-1):
        k = 0
        for i in range(4):
            for j in range(4):
                ksi[t][i][j] = alpha[t][i] + A[i][j] + B[j][ord(o[t+1])] + beta[t+1][j]
                temp[k] =ksi[t][i][j]
                k += 1
        s = log_sum(temp)
        for i in range(4):
            for j in range(4):
                ksi[t][i][j] -= s


def bw(pi A B alpha beta gamma ksi o):
    T = len(alpha)
    for i in range(4):
        pi[i] = gamma[0][i]
    s1 = [0 for x in range(T-1)]
    s2 = [0 for x in range(T-1)]
    for i in range(4):
        for j in range(4):
            for t in range(T-1):
                s1[t] = ksi[t][i][j]
                s2[t] = gamma[t][i]
            A[i][j] = log_sum(s1) - log_sum(s2)
    s1 = [0 for x in range(T)]
    s2 = [0 for x in range(T)]
    for i in range(4):
        print “bw“ i
        for k in range(65536):
            valid = 0
            if k % 10000 == 0:
                print “bw - k“ k
            for t in range(T):
                if ord(o[t]) == k:
                    s1[valid] = gamma[t][i]
                    valid += 1
                s2[t] = gamma[t][i]
            if valid == 0:
             

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-05-08 15:01  24.HMM\
     目录           0  2017-05-08 15:01  24.HMM\.idea\
     文件         459  2017-05-08 13:07  24.HMM\.idea\24.HMM.iml
     文件         687  2017-05-08 13:07  24.HMM\.idea\misc.xml
     文件         264  2017-05-08 13:01  24.HMM\.idea\modules.xml
     文件       25488  2017-05-08 13:15  24.HMM\.idea\workspace.xml
     文件        6612  2017-05-08 13:08  24.HMM\24.1.TrainHMM.py
     文件        7390  2017-05-08 13:08  24.HMM\24.2.Segmentation.py
     文件         355  2017-05-08 13:09  24.HMM\24.3.jieba_intro.py
     文件        4036  2017-05-08 13:12  24.HMM\24.4.GMHMM.py
     文件        2178  2017-05-08 13:12  24.HMM\24.5.Stock.py
     文件        4646  2017-05-08 13:14  24.HMM\24.6.Current.py
     文件         245  2017-05-08 13:08  24.HMM\A.txt
     文件     3682048  2017-05-08 13:08  24.HMM\B.txt
     文件      135168  2017-03-08 13:46  24.HMM\Current.xls
     文件   100000000  2006-06-09 20:40  24.HMM\Englishword.train
     文件       11515  2016-11-25 13:06  24.HMM\MyBook.txt
     文件       84462  2016-11-25 13:06  24.HMM\SH600000.txt
     文件      261120  2017-05-08 13:14  24.HMM\new_current.xls
     文件       38981  2016-11-25 13:06  24.HMM\novel.txt
     文件          62  2017-05-08 13:08  24.HMM\pi.txt
     文件     7728239  2016-11-25 13:06  24.HMM\pku_training.utf8

评论

共有 条评论