Кластеризация многомерных временных рядов - PullRequest
0 голосов
/ 06 августа 2020

В настоящее время я пытаюсь сгруппировать многомерные временные ряды с помощью 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.

Очевидно алгоритм не может обрабатывать трехмерную матрицу. Кто-нибудь знает, как я могу обойти это без потери информации?

...