Python:基于可能季节性数据的聚类模型

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

我有一个如下所示的数据集:

年月 ID X1

1 2021-01 100

1 2021-02 200

1 2021-03 12

2 2021-01 150

2 2021-03 10

数据可能是季节性的;在 12 月/1 月/2 月和 7 月/8 月/9 月,我预计回归量 X1 会有所不同(相对于单个 ID 的时间序列,对于某些 ID 来说较大,对于其他 ID 来说可能较小)。另外,如果 ID 不存在月份,则 X1 应设置为 0。

是否有一个基于集群的模型可以用 Python 编码,并且能够识别这样的季节性趋势?根据 X1 在某些月份是否上升或下降,将每个 ID 聚类为批次。

我尝试使用 tslearn.clustering > TimeSeriesKMeans 和 TimeSeriesScalerMeanVariance,但它不会根据季节 ID 进行聚类,而是形成自己的聚类...本质上,聚类是 X1 值较高的 ID 和 X1 值较低的 ID。

python time-series cluster-analysis
1个回答
0
投票

也许这会有所帮助^^

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# Assuming your data is stored in a DataFrame called df
# Preprocessing
df['YR-MONTH'] = pd.to_datetime(df['YR-MONTH'])
df = df.pivot(index='ID', columns='YR-MONTH', values='X1').fillna(0)

# Feature Engineering - calculate mean for each quarter
quarterly_mean = df.resample('Q', axis=1).mean()

# Scale the features
scaler = StandardScaler()
scaled_features = scaler.fit_transform(quarterly_mean)

# Clustering
kmeans = KMeans(n_clusters=3)  # You can adjust the number of clusters
clusters = kmeans.fit_predict(scaled_features)

# Add cluster labels back to the DataFrame
df['Cluster'] = clusters

# Visualize or analyze the clusters
© www.soinside.com 2019 - 2024. All rights reserved.