0

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

日期 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

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

日期 2021-02-01 00:00:00 2021-02-01 00:10:00 ...
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 语句来控制它?

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

4

1 回答 1

0

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

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

于 2021-04-27T13:03:18.903 回答