You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

时间序列聚类问题:聚类时如何保留时间戳索引但不将其作为特征

解决方法

核心逻辑是K-Means的输出结果顺序和你输入聚类模型的样本顺序完全一一对应,只要保证特征提取时不打乱原DataFrame的行顺序,就能直接把聚类结果和原时间戳绑定,无需把时间戳纳入特征参与运算。

具体操作步骤

  • 第一步:从原DataFrame中仅提取10个特征列做预处理,不要改动原DataFrame的行顺序
    示例代码:
    import pandas as pd
    import numpy as np
    from sklearn.cluster import KMeans
    from sklearn.preprocessing import StandardScaler
    
    # 假设你的原数据集为df,timestamp是df的索引,10个特征为df的普通列
    feature_cols = df.columns.tolist()
    X = df[feature_cols].values
    
  • 第二步:对特征做缩放,执行K-Means聚类
    示例代码:
    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(X)
    kmeans = KMeans(n_clusters=3, random_state=42)
    # 聚类得到的labels顺序和X的行顺序、原df的行顺序完全一致
    labels = kmeans.fit_predict(X_scaled)
    
  • 第三步:把聚类标签贴回原DataFrame,直接通过索引关联时间戳
    示例代码:
    df['cluster_label'] = labels
    

按簇提取对应时间戳的方法

提取指定簇的所有时间戳:

# 示例:提取簇0的所有时间戳
cluster_0_timestamps = df[df['cluster_label'] == 0].index.tolist()

批量汇总所有簇对应的时间戳:

cluster_timestamp_map = df.groupby('cluster_label').apply(lambda x: x.index.tolist()).to_dict()

注意事项

  • 不要对提取后的特征矩阵单独做shuffle操作,否则会打乱和原DataFrame的行对应关系
  • 如果中间需要做缺失值删除、异常值过滤等操作,直接在原DataFrame上处理后再提取特征,保证行顺序一致

内容的提问来源于stack exchange,提问作者Ghadah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:24:04