0

我有 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]”。

请建议我这背后的可能原因和解决方案。

谢谢。

4

0 回答 0