如何对多个日期时间数据进行聚类以发现模式

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

我有一个数据框

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最近,因为它们的交易时间和位置彼此更相似。

谢谢

python pandas cluster-analysis k-means knn
1个回答
0
投票

我的观察方式取决于最终目标,您可以有一些选择。

1。格式化为二维:

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

导致类似的交易之间以秒为单位的差异:

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

[如果您的头寸功能描述的是交易发生的“地点”,则可以只区分相同头寸的交易之间的区别(groupby是您的朋友)。为每个用户提供2D向量,并在每个位置进行两次交易之间的时间。然后,您的特征也可以通过位置来计算:

    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)以及与时间序列相关的整套技术。

© www.soinside.com 2019 - 2024. All rights reserved.