簡體   English   中英

如何構建隱藏馬爾可夫 model

[英]How to build a hidden markov model

我正在嘗試構建一個隱藏的馬爾可夫 model 用於根據操作碼(基本上只是告訴惡意軟件做什么的詞)對惡意軟件進行分類。 我的數據包含 10 種類型的惡意軟件,每種類型大約有 1000 個操作碼文件。 在每個文件中,我有一個隨機數的操作碼和 27 個唯一值,所以我將設置 M = 27。我想知道是否有人有我可以參考或查看的代碼

def train_hmm_random_restarts(obs_seq):
    len_o = len(obs_seq[0])
    if len_o>30000:
        random_restarts = 10
    elif len_o>10000:
        random_restarts = 30
    elif len_o>=5000:
        random_restarts = 50
    else:
        random_restarts = 100
    model= hmm.MultinomialHMM(n_components=2, n_iter=500, tol=0.5)
    # model.verbose=True
    model.fit(X=obs_seq)
    prev_model = model
    prev_log_prob = model.monitor_.history.pop()
    #random_restarts = 0
    while(random_restarts!=0):
        model= hmm.MultinomialHMM(n_components=2, n_iter=500, tol=0.5)
        #   model.verbose=True
        model.fit(X=obs_seq)
        log_prob = model.monitor_.history.pop()
        if (prev_log_prob < log_prob):
            prev_model = model
            prev_log_prob = log_prob
        random_restarts -= 1
    return prev_model

mymodel = train_hmm_random_restarts(np.array([[0,1,3,0,0,0,1,2,2,2,2]]))
#mymodel = train_hmm_random_restarts(X_train)
print(mymodel.emissionprob_)
print(mymodel.transmat_)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM