如何在给定的数据集中找到从序列中得到的子序列的概率?

2024-03-29 01:08:35 发布

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

我有一个数据集(CSV文件)的链接序列与他们的订单状态为每个序列。在prefixSpan算法的帮助下,我得到了子序列及其计数(如here)。 但我还想找出每个子序列导致下单的概率=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算法的帮助下将最小支持度设为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

Tags: 文件csv数据订单算法supporthere顺序