【问题标题】:Clustering of energy data, Pre-Clustering / Leveling Options?能源数据聚类、预聚类/均衡选项?
【发布时间】:2021-07-18 11:04:08
【问题描述】:

我从 15 个位置获取能源数据。总共有 3 个特征(L1、L2、L3 的失真值),所以我每 10 分钟有 90 个值。

Date Loc1_D_L1 Loc1_D_L2 Loc1_D_L3 Loc2_D_L1
2021-02-01 00:00:00 10,387 12,953 9,563 11,938
2021-02-01 00:10:00 .... .... .... ....

我希望这个想法很清楚。

现在我想对它们进行聚类,但在时间方面,但在位置方面。如果可能的话,我想将它们分组。例如:位置 3,4,5,7 的行为相似 = 集群 1。位置 1,2,9 的行为相似 = 集群 2。我想推导出它是否可行,只是为了观察 certrain 位置的行为以降低其他位置的复杂性操作。

所以我确实转换了矩阵并应用了 KMeans 聚类


from sklearn.cluster import KMeans
from pandas import DataFrame

model = KMeans(n_clusters=5).fit(df)
pred = model.labels_
pred

Nc = range(1, 20)
kmeans = [KMeans(n_clusters=i) for i in Nc]
kmeans
score = [kmeans[i].fit(df).score(df) for i in range(len(kmeans))]
score
df['Cluster']=pred

我最终得到了一张桌子,看起来像这样:

Date 2021-02-01 00:00:00 2021-02-01 00:10:00 ... Cluster
Loc1_D_L1 10,387 12,953 ... 1
Loc1_D_L2 12,963 10,xzy ... 1
Loc1_D_L3 10,387 12,953 ... 2
Loc1_D_L1 12,963 10,xzy ... 1

问题是: 它现在聚集了每个功能,但不是每个位置。将位置 1 的 L1 与位置 3 的 L1 聚类并没有帮助。

如何解决这个问题?是否有“级别”功能,或者我可以通过引用第一列中的字符串的 if / else 语句来控制它吗?

还有其他想法、策略或疑问吗?

【问题讨论】:

    标签: python scikit-learn cluster-analysis transpose


    【解决方案1】:

    有什么想法吗?我现在的解决方案: 我试图增加集群的数量,以便不会出现所描述的问题。 6 个集群完成这项工作,但这不是一个干净的解决方案。

    下一步是测量集群的“距离”。 什么可能是一个不错的工具来做到这一点? “Kullback-Leibler 分歧”可能是一种选择。如果我理解正确,这是为加起来为 1 的概率而设计的,因此它可能不是正确的工具。 还有什么方法可以挑战或衡量我的集群的质量?绘图很好,但更多的是定性方法。

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 2018-12-22
      • 1970-01-01
      • 2015-04-27
      • 2021-09-27
      • 2019-10-29
      • 2011-12-28
      • 2023-03-30
      • 2018-05-04
      相关资源
      最近更新 更多