hmmlearn库fit函数报错:fit()需2个位置参数却传入3个
解决hmmlearn中GaussianHMM.fit()的参数报错问题
嘿,这个问题我之前也碰到过!你遇到的TypeError: fit() takes 2 positional arguments but 3 were given报错,根源是hmmlearn新版本调整了fit方法的参数传递方式。
原来的代码里,你把lengths作为位置参数直接传给fit,但在新版hmmlearn中,lengths已经不再是位置参数了,必须通过关键字参数来指定它。
修正后的代码
把你最后一行代码改成这样:
import numpy as np from hmmlearn import hmm X1 = [[0.5], [1.0], [-1.0], [0.42], [0.24]] X2 = [[2.4], [4.2], [0.5], [-0.24]] X = np.concatenate([X1, X2]) lengths = [len(X1), len(X2)] # 关键修改:用关键字参数传递lengths model = hmm.GaussianHMM(n_components=3) model.fit(X, lengths=lengths)
为什么会报错?
在旧版hmmlearn中,fit方法允许把lengths作为第二个位置参数传入,但新版本为了API的规范性,把lengths改成了仅关键字参数(keyword-only argument)。这就导致你直接传三个位置参数时,Python会认为你多传了一个参数,从而抛出类型错误。
运行修改后的代码,应该就能正常训练你的隐马尔可夫模型了!
内容的提问来源于stack exchange,提问作者Joep van der Plas
相关产品推荐
相关产品推荐

