Python 是否有任何算法可以从序列数据库中挖掘连续闭合序列?
我正在研究文本压缩,我想利用挖掘闭合频繁序列的知识。现有的GSP、CloSpan、ClaSP、Bide等算法都挖掘了连续和非连续的频繁序列。你能帮我找到这样的算法吗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 已有的算法考
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算法是如何工作的(使用您的候选生成方法;上面的算法就是其中的一个示例)