首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我们有新的样本时,如何更新学习对象?

当我们有新的样本时,如何更新学习对象?
EN

Stack Overflow用户
提问于 2020-09-23 07:38:03
回答 1查看 703关注 0票数 0

我已经实现了一个简单的代码隐马尔可夫模型,通过and学习,它运行良好。我使用了fit()方法,即hmmlearn.fit来根据我的数据学习hmm参数。如果我有更多的数据,并希望更新以前的模型,而不需要培训/从零开始拟合,我能做什么?换句话说,如何根据我目前所知道的来初始化一个新的模型,并继续使用新的观察/样本来适应我的数据更好的模型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 15:53:02

hmmlearn中,您可能已经注意到,一旦您使用hmmlearn.fit进行培训,模型参数就会更新:

代码语言:javascript
复制
import numpy as np
import pickle
from hmmlearn import hmm

np.random.seed(42)

# initialize model
model = hmm.GaussianHMM(n_components=3, covariance_type="full")
model.startprob_ = np.array([0.33, 0.33, 0.34])
model.transmat_ = np.array([[0.1, 0.2, 0.7],
                            [0.3, 0.5, 0.2],
                            [0.5, 0.1, 0.4]])
model.means_ = np.array([[1.0, 1.0], [2.0, 1.0], [3.0, 1.0]])
model.covars_ = np.tile(np.identity(2), (3, 1, 1))

# generate "fake" training data
emissions1, states1 = model.sample(100)
print("Transition matrix before training: \n", model.transmat_)

# train
model.fit(emissions1)
print("Transition matrix after training: \n", model.transmat_)

# save model
with open("modelname.pkl", "wb") as f: pickle.dump(model, f)

#################################

>>> Transition matrix before training: 
 [[0.1 0.2 0.7]
 [0.3 0.5 0.2]
 [0.5 0.1 0.4]]
>>> Transition matrix after training: 
 [[0.19065325 0.50905216 0.30029459]
 [0.41888047 0.39276483 0.18835471]
 [0.44558543 0.13767827 0.4167363 ]]

这意味着,如果你有一个新的培训数据(即。( emissions2),您可以使用相同的更新模型对新的排放序列进行培训。您可以选择通过酸洗来保存整个模型(如上面所示),也可以保存转换矩阵、发射矩阵等的numpy数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64023173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档