微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。