我从 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 语句来控制它?
还有其他想法、策略或疑问吗?