В настоящее время я пытаюсь сгруппировать многомерные временные ряды с помощью K-средних и распространения сродства. Для алгоритмов кластеризации я использую from sklearn.cluster import AffinityPropagation as AP
и from sklearn.cluster import KMeans
.
Более важная цель состоит в том, чтобы сгруппировать комнаты из здания с аналогичными тепловыми характеристиками. Я создал разные мультииндексные DataFrames, которые выглядят следующим образом:
0 1 2 3 ... 8761
level_1 Group level_0 ...
R 0.000 + R0.000a + R.1.511 Verkehrsflächen Nord Tair 20.996 21.000 21.000 21.000 ... 21.000
Top 20.782 20.773 20.767 20.761 ... 20.807
qdaylite 0.000 0.000 0.000 0.000 ... 0.000
R 0.001 Hörsaal Nord Tair 21.223 21.126 21.049 21.005 ... 21.376
Top 21.493 21.392 21.318 21.281 ... 21.686
... ... ... ... ... ... ...
R5.508 Verkehrsflächen Sued Top 20.932 20.930 20.927 20.921 ... 20.955
[2667 rows x 8762 columns]
Каждая комната level_1
имеет три переменные Tair, Top, qdaylite
. Для кластеризации я изменил df
на np.array
:
[[[0.48851765 0.48834938 0.48811101 ... 0.48970454 0.48939641 0.48911145]
[0.48353847 0.48307055 0.4826953 ... 0.48497073 0.48445584 0.484034 ]
[0. 0. 0. ... 0. 0. 0. ]]
...
[[0.4937993 0.49127948 0.48924994 ... 0.49684024 0.49501282 0.49349016]
[0.50008144 0.49746523 0.49550241 ... 0.50362615 0.50139828 0.50024456]
[0. 0. 0. ... 0. 0. 0. ]]]
(889, 3, 8762)
Когда я пытаюсь уместить массив с AP_c = AP(damping=damping, convergence_iter=25).fit(AP_input)
, произошло следующее исключение: ValueError. Found array with dim 3. Estimator expected <= 2.
Очевидно алгоритм не может обрабатывать трехмерную матрицу. Кто-нибудь знает, как я могу обойти это без потери информации?