如何群集多个日期时间数据以发现模式

2024-06-07 04:44:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧

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

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

我以前学过K-means和KNN,但是如果我的理解正确的话,这些算法是基于所有用户都有相同维度数据的假设。已经在谷歌上搜索过,但没有结果

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

谢谢


Tags: 数据用户算法iddatetime记录模式position
1条回答
网友
1楼 · 发布于 2024-06-07 04:44:56

在我看来,根据你的最终目标,你有一些选择

一,。格式为二维:

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

导致类似于以秒为单位的事务之间的差异:

    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

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

相关问题 更多 >