时间序列聚类分析时空python

问题描述 投票:0回答:0

我想根据三个气象场对模式进行聚类。每个字段的形状为 31、137、181(31 个时间步长、137 个纬度、181 个经度),我想要每个时间步长的集群空间图。鉴于通用 kmeans 聚类方法中的标签没有意义并且不允许随着时间的推移“跟踪”聚类,我尝试在 python 中使用

tslearn.clustering
,但我不确定如何构建我的数据?这是为我工作的例子

import numpy as np
import xarray as xr
from tslearn.clustering import TimeSeriesKMeans

# Load the data
ds_var1 = xr.open_dataset(var1).var1
ds_var2 = xr.open_dataset(var2).var2
ds_var3 = xr.open_dataset(var3).var3

# Stack
X = np.stack((ds_msl.values.flatten(),
              ds_10u.values.flatten(), 
              ds_10v.values.flatten()), 
              axis=1)

X = X.reshape(-1, 3)
## or X = X.reshape(-1, 3, 1) ??

# Cluster the data using time-series k-means
n_clusters = 8
km = TimeSeriesKMeans(n_clusters=n_clusters, 
                      metric="euclidean", 
                      verbose=0, 
                      max_iter=5, 
                      n_init=5, 
                      random_state=0)

labels = km.fit_predict(X)

# Reshape the cluster labels to match the original data shape
labels = labels.reshape(ds_var1.shape)

据我所知,

X
的形状是 number_of_samples,number_of_frames,特征?但我不清楚这如何适用于我的问题。
X = X.reshape(-1, 3) (X.shape = (768707, 3))
X = X.reshape(-1, 3, 1) (X.shape = (768707, 3, 1))
都会产生输出,但我不知道这里的正确解决方案是什么/我是否需要假设一个完全不同的形状?我在文档中也找不到它,谁能帮我解决这个问题?

python k-means dtw
© www.soinside.com 2019 - 2024. All rights reserved.