我有 3 个观察序列,我有 3 个这样的观察序列。存在三种隐藏状态。我正在使用 HMMlearn 库的 GaussianHMM。
state_machine = GaussianHMM(n_components=3, covariance_type="full", n_iter=1000) state_machine.fit(np.stack(np.split(X, 3), axis=1))
对于一项功能,数据如下
[ 119.01182027 87.03816453 100.50549142 130.54392216 98.57366214
98.62378821 102.27561523 102.84749098 114.64554409]
我将观察结果划分如下。因为我的目标是预测下一次观察。并保持观察结果不变会产生'9 X 3'_compute_log_likelihood。所以我需要它以'3 X 3'的形式出现,这样我就可以预测下一次观察。
np.stack(np.split(X, 3), axis=1)
[[ 119.01182027 130.54392216 102.27561523]
[ 87.03816453 98.57366214 102.84749098]
[ 100.50549142 98.62378821 114.64554409]]
但我得到的状态转换矩阵为
[[ 0. 0. 1.]
[ 0. 0. 0.]
[ 0. 1. 0.]]
同样对于“state_machine.predict(test_r)”,我收到错误,因为“ValueError:transmat_ 的行必须总和为 1.0(得到 [1. 0. 1.])”。
但对于其他特征,数据如下
[ 98.37498104 98.45256112 94.2081596 108.67319206 92.9055614
98.27020888 90.16851055 105.08352667 102.24313963]
np.stack(np.split(X, 3), axis=1)
[[ 98.37498104 108.67319206 90.16851055]
[ 98.45256112 92.9055614 105.08352667]
[ 94.2081596 98.27020888 102.24313963]]
我正在低于状态转换矩阵。
[[` 5.17868641e-03 2.58836952e-03 9.92232944e-01]
[ 9.95633499e-01 7.42556661e-04 3.62394458e-03]
[ 3.40871039e-01 3.07185528e-03 6.56057106e-01]]
对于“state_machine.predict(test_r)”,我得到“隐藏状态:[2]”。
请建议我这背后的可能原因和解决方案。
谢谢。