You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

hmmlearn MultinomialHMM emissionprob_维度不符预期的技术咨询

问题原因与解决办法

为什么emissionprob_维度是(2,10)?

你犯了两个关键错误:

  • 输入格式误解:hmmlearn的fit方法对输入格式有明确要求:如果是多个独立序列,需要传入一维数组组成的列表;而你传入的(100000,10)二维数组,会被识别成单个长度为100000的序列,每个观测是10维的离散向量。这直接导致发射概率的列数等于观测维度10,而非你预期的词汇量5。
  • 观测值未从0开始:MultinomialHMM要求离散观测值必须从0开始连续取值,你的观测是1-5,即使格式正确,模型也会将最大观测值5当作特征数量的依据(即认为有6个特征),而非你设定的5个。

修正后的代码

from hmmlearn import hmm
import numpy as np

# 生成序列:观测值改为0-4(对应5种符号),保留列表格式
sequences = np.random.randint(0, 5, size=(100000, 10)).tolist()

# 创建并拟合模型:直接传入序列列表,无需转二维数组
model = hmm.MultinomialHMM(n_components=2)
model.fit(sequences)

# 打印参数
print("初始状态分布:")
print(model.startprob_)
print("\n转移矩阵:")
print(model.transmat_)
print("\n发射概率:")
print(model.emissionprob_)
print("发射概率维度:", model.emissionprob_.shape)  # 输出应为(2,5)

关键修正点

  • 观测值调整为0-4,对应5种符号,符合词汇量要求;
  • 保留序列列表格式传入fit,让模型识别为100000个长度为10的独立序列,每个观测是1维离散值。

这样修正后,emissionprob_的维度就会是(2,5),与你的预期一致。

内容的提问来源于stack exchange,提问作者zzzbbx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:48:25