我正在尝试建立一个隐马尔可夫模型,用于根据操作码(基本上只是告诉恶意软件做什么的单词)对恶意软件进行分类。我的数据由10种类型的恶意软件组成,每种类型大约有1000个操作码文件。在每个文件中,我有一个具有27个唯一值的随机数量的操作码,因此我将设置M= 27。我想知道是否有人有我可以参考或查看的代码
发布于 2021-10-07 11:31: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_)https://stackoverflow.com/questions/62476795
复制相似问题