【问题标题】:How to cluster multiple datetime data to discover patterns如何对多个日期时间数据进行聚类以发现模式
【发布时间】:2020-06-24 08:45:38
【问题描述】:

我有一个数据框

usd_id   trade_datetime   position
  A     2019/01/01 08:01     1
  A     2019/01/01 08:03     1
  B     2019/01/01 08:03     1
  A     2019/01/01 08:03     1
  C     2019/01/01 08:10     2
  C     2019/01/01 08:10     2
  A     2019/01/01 08:20     2

对于每个user_id,可以做n条交易记录。 是否可以对这些交易模式进行聚类以识别相似的用户? 如果是,如何进行数据处理?

我之前学过 K-means 和 KNN,但是如果我的理解是正确的,这些算法是基于所有用户拥有相同维度数据的假设。谷歌搜索,但无济于事。

在上述数据中,user_id A 和 user_id B 应该比 A-C 和 B-C 距离最近,因为它们的交易时间和位置更相似。

谢谢

【问题讨论】:

  • 您好,在您尝试识别的模式中,位置对于交易时间是否重要?
  • 您好,最好将位置列作为一个因素,但如果不可能包括这个因素,也可以排除。
  • 看我的回答,但是你的数据的形状真的取决于你想从你的数据中提取什么知识。对于类似的用户,按照我的帖子中的位置格式化为具有特征的 2D 数据集可以让您使用经典的聚类算法!

标签: python pandas cluster-analysis k-means knn


【解决方案1】:

在我看来,您有一些选择,具体取决于您的最终目标。

1。格式化为二维:

您可以为每个用户计算每个后续交易时间之间的差异。这可以为每个用户提供一个向量,您可以在该向量上计算一些特征,例如均值和四分位数。

导致在几秒钟内交易之间的差异:

    User_ID    mean_diff_transaction  median_diff_transaction   ...
0      A                 60                      50
1      B                 40                      30

如果您的仓位特征描述了交易发生的“地点”,那么您可以区分相同仓位的交易(groupby 是您的朋友)。为每个用户提供一个二维向量,其中包含每个位置的交易之间的时间。那么你的特征也可以通过位置来计算:

    User_ID    mean_diff_transaction_pos1  median_diff_transaction_pos1   ...
0      A                   60                        50
1      B                   40                        30

当用户在这些地方没有任何交易时,将其设置为默认值,这将取决于您将用于实现此目标的目标和算法。

这种表示将允许您使用您已经使用过的经典算法,例如 KNN

2。保留“3”维数据(从用户向量的角度来看):

    User_ID      transaction_time       position      
0     A        2019/01/01 00:00:00          1         
1     B        2019/01/01 00:00:00          1          
2     A        2019/01/01 01:00:00          1          
3     B        2019/01/01 01:00:00          2         

您可以将此数据视为一个图,其中 X 轴是时间(例如每天一个刻度),Y 轴是交易次数。例如,允许您绘制每个头寸每天的交易数量曲线,以查看它们随着时间的推移的“受欢迎程度”。同样的方法可以应用于用户的观点而不是位置。

如果您想监控事务之间的时间差异,只需将此差异作为向量保留,从而生成“某种”时间序列数据集。

根据您要分析的内容,时间序列数据可能允许您使用季节性分解(参见 python 中的statsmodels),以及与时间序列相关的一整套技术。

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 2016-02-01
    • 2019-02-09
    • 2018-04-13
    • 2020-10-03
    • 1970-01-01
    • 2012-12-28
    • 2014-07-26
    • 2019-11-02
    相关资源
    最近更新 更多