首页 > 解决方案 > 如何找到从给定数据集中的序列中获得的子序列的概率?

问题描述

我有一个链接序列的数据集(CSV 文件),其中包含每个序列的订单状态。在 prefixSpan 算法的帮助下,我得到了带有计数的子序列(如此所述)。但我也想找到每个子序列导致下订单 = 1 的概率。假设链接为abcd它们在数据框中的顺序和订单状态如下:

   Link sequences   Order status
    a,b,c,a,c,c                 0
    a,c,b,c                       1
    a,b,d,c,b,c                 1
    a,c,b,c                       0

如果我在 prefixSpan 算法的帮助下设置最小 Support =4,我得到的子序列

    Subsequences            Support
     [a]                                    4
     [a,b]                                 4
     [a,b,c]                              4
     [a,c]                                 4
     [a,c,c]                              4
     [b]                                   4
     [b,c]                                4
     [c]                                   4
     [c,c]                                4

我应该在上面链接中提到的prefixSpan算法代码中进行哪些更改以获得概率,如下所示:

Subsequence   Support     Prob
 [a]                          4             0.5
 [a,b]                       4             0.5
 [a,b,c]                    4             0.5
 [a,c]                       4             0.5
 [a,c,c]                    4             0.5
 [b]                          4             0.5
 [b,c]                       4             0.5
 [c]                          4             0.5
 [c,c]                       4             0.5

用于计算子序列概率的过程是:

添加存在子序列的所有序列的已下订单状态,并将其除以存在子序列的序列数,例如:

P(subsequence [a,c,c]) =( 0+1+1+0)/4 = 0.5

标签: pythonpandasprobabilitydata-miningclickstream

解决方案


推荐阅读