使用 python 包 HMMlearn 拟合时间序列数据

问题描述

我有一个数据集,其中包含随时间变化的电流测量样本(两个连续样本之间的时间差不均匀)。

Idc vs time data frame

Idc vs time plot

我想用HMM求这个时间序列数据的分量个数,但是不知道怎么处理数据非均匀样本(hmmlearn的文档还不够)。

例如,我使用了以下代码

Y = np.column_stack(df.iloc[:,0]).T #The current values over time

num_components = 2
model = GaussianHMM(n_components=num_components,covariance_type='full',n_iter=1000)

model.fit(Y)
print('\nMeans and variances of hidden state:')
for i in range(model.n_components):
    print('\nHidden state',i+1)
    print('Mean =',round(model.means_[i][0],3))
    print('Variance =',round(np.diag(model.covars_[i])[0],3))
    
num_samples = df.shape[0]
samples,_ = model.sample(num_samples)
df['samples'] = samples


plt.figure(figsize=(15,8))
plt.title('Number of components = ' + str(num_components))
df['samples'].plot()
df[('Idc','pA')].plot(c='r')
plt.legend()
plt.show()

隐藏状态的均值和方差:

Hidden state 1
Mean = -10.806
Variance = 0.847

Hidden state 2
Mean = -4.142
Variance = 1.754

The HMM prediction

我用对了吗?我如何(或应该)添加有关时间的信息?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)