Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有任何算法可以从序列数据库中挖掘连续闭合序列?_Python_Algorithm_Data Mining - Fatal编程技术网

Python 是否有任何算法可以从序列数据库中挖掘连续闭合序列?

Python 是否有任何算法可以从序列数据库中挖掘连续闭合序列?,python,algorithm,data-mining,Python,Algorithm,Data Mining,我正在研究文本压缩,我想利用挖掘闭合频繁序列的知识。现有的GSP、CloSpan、ClaSP、Bide等算法都挖掘了连续和非连续的频繁序列。你能帮我找到这样的算法吗 For example if the sequence database is SID Sequence 1 CAABC 2 ABCB 3 CABC 4 ABBCA and minimum support is 2 已有的算法考

我正在研究文本压缩,我想利用挖掘闭合频繁序列的知识。现有的GSP、CloSpan、ClaSP、Bide等算法都挖掘了连续和非连续的频繁序列。你能帮我找到这样的算法吗

For example if the sequence database is 
SID        Sequence
1            CAABC
2            ABCB
3            CABC
4            ABBCA
and minimum support is 2

已有的算法考虑了序列ID的子序列“CB”与ID 1,但我不想这样。

< P>不存在求连续压缩序列的算法。您可以修改现有的算法,只挖掘连续序列。我建议您修改BIDE算法,只查找连续子序列

现代序列模式挖掘算法试图修剪搜索空间以减少运行时间。由于“非连续”子序列可以是输入序列的任意组合,因此搜索空间呈指数级增大。在你的例子中,考虑到序列是连续的,即我们已经知道组合,搜索空间要小得多。所以,如果你愿意的话,你可以自己做一个算法,而且速度还是比较快的

下面是一个粗略的递归示例的样子:

def f(str, database, minSupp):
    freq = 0

    if len(patt) == 0:
        return ""

    #count frequency
    for trans in db:
        if patt in trans:
            freq += 1

    if freq >= minSupp:
        return patt
    else: #break it down
        r = []
        r.append(f(patt[1:], db, minSupp)) #All but the first element
        r.append(f(patt[:-1], db, minSupp)) #All but the last element
        return r
这只是演示了一种方法。当然,这很糟糕

为了更快地完成这项工作,您可以使用mayble write一些条件,以便在已知模式的情况下不进行递归调用

更快的方法是维护所有模式的反向索引,然后使用Apriori条件增量更新它们以创建超级模式。为此,您可以参考一些幻灯片来解释Apriori算法是如何工作的(使用您的候选生成方法;上面的算法就是其中的一个示例)