python中的隐马尔可夫模型(HMM)总是预测时间序列的相同值

python中的隐马尔可夫模型(HMM)总是预测时间序列的相同值,python,time-series,prediction,hmmlearn,Python,Time Series,Prediction,Hmmlearn,我一直在尝试使用python中的来构建预测时间序列值的模型。我的代码基于,详细说明了如何使用股票价格时间序列的包 在对大量时间序列数据进行模型拟合并尝试为其余数据建立预测模型后,我遇到了一个问题模型总是预测相同的结果为最可能的结果-hmm。对于测试系列中的每个实例,score返回相同结果的最高对数可能性。此外,它预测的结果是最接近其拟合时间序列平均值的结果。它从不偏离。我真的不知道该怎么办。是模型有缺陷,还是我做错了什么 下面是进行预测的代码。它将所有可能的_结果(定义如下)附加到时间序列中的一

我一直在尝试使用python中的来构建预测时间序列值的模型。我的代码基于,详细说明了如何使用股票价格时间序列的包

在对大量时间序列数据进行模型拟合并尝试为其余数据建立预测模型后,我遇到了一个问题模型总是预测相同的结果为最可能的结果-hmm。对于测试系列中的每个实例,score返回相同结果的最高对数可能性。此外,它预测的结果是最接近其拟合时间序列平均值的结果。它从不偏离。我真的不知道该怎么办。是模型有缺陷,还是我做错了什么

下面是进行预测的代码。它将所有可能的_结果(定义如下)附加到时间序列中的一系列测试点(测试数据集中的最后100个)并评估可能性(使用hmm.score):

我不知道问题是出在上面,还是出在数据的实际创建和模型本身的拟合上。这可以简单地做到如下:

timeSeries.reverse()

difference_fracs = []

for i in range(0, len(timeSeries)-1):
    difference_frac = ((timeSeries[i+1] - timeSeries[i])/(timeSeries[i]))
    difference_fracs.append(difference_frac)

differences_array = np.array(difference_fracs)
differences_array = np.reshape(differences_array, (-1,1))

train_data_length = 2000

train_data = differences_array[:train_data_length,:]
test_data = differences_array[train_data_length:len(timeSeries),:]
actuals_test = timeSeries[train_data_length:]

n_hidden_states = 4

hmm = GaussianHMM(n_components = n_hidden_states)
hmm.fit(trainData)
我意识到,如果没有实际的时间序列,这些都是毫无意义的,我是不允许分享的——尽管如果有人在过去有过类似的问题,我很想听听你的想法

timeSeries.reverse()

difference_fracs = []

for i in range(0, len(timeSeries)-1):
    difference_frac = ((timeSeries[i+1] - timeSeries[i])/(timeSeries[i]))
    difference_fracs.append(difference_frac)

differences_array = np.array(difference_fracs)
differences_array = np.reshape(differences_array, (-1,1))

train_data_length = 2000

train_data = differences_array[:train_data_length,:]
test_data = differences_array[train_data_length:len(timeSeries),:]
actuals_test = timeSeries[train_data_length:]

n_hidden_states = 4

hmm = GaussianHMM(n_components = n_hidden_states)
hmm.fit(trainData)