GMM/EM 在时间序列集群上

GMM/EM on time series cluster

根据 paper,它应该可以工作。 但是作为 scikit-learn 包的学习者..我不明白如何。 所有示例代码都按椭圆或圆圈聚类为 here.

我真的很想知道如何通过不同的模式对以下图进行聚类...0 -3 是特定时间段内的功率平均值(分为 4),而 4、5、6 分别对应于标准年份的偏差,weekday/weekend 的方差,winter/summer 的方差。所以ylabel不一定满足4,5,6。

根据示例..BIC 确实生成了最佳簇数为 5。

n_components = np.arange(1, 21)
models = [GMM(n, covariance_type='full', random_state=0).fit(input)
      for n in n_components]
plt.plot(n_comp, [m.bic(read) for m in models], label = 'BIC')
plt.legend(loc='best')
plt.xlabel('n_components')

但是,如果我使用可用的示例代码进行绘图......它 returns 一些完全奇怪的东西,不值得分享。我虽然负 BIC 没问题。但我什至不知道它是否正确聚类以推断出 5 是最佳数字。

基本上是为了解决这个问题。我的关注 回答了如何使用 GMM 进行聚类。

使用相应的参数创建模型

gmm = GaussianMixture(n_components=10, covariance_type ='full', \
              init_params = 'random', max_iter = 100, random_state=0)

拟合您的数据(样本数 x 属性数),其名称在我的案例中输入

gmm.fit(input)
print(gmm.means_.round(2))
cluster = gmm.predict(input)

集群包含我输入的每个样本的标签

如有不妥欢迎补充