在Python中使用FP-Growth算法确定最频繁的模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python中使用FP-Growth算法确定最频繁的模式相关的知识,希望对你有一定的参考价值。

我已经使用mlxtend.frequent_patterns fpgrowth库在python中使用FP-Growth算法。我遵循了他们页面中提到的代码,并且生成了一些我认为是递归的规则。我已经使用这些规则形成了一个数据框。现在,我正在尝试使用循环来计算支撑力和提升力,但是却浪费了很多时间,而我发现效率很低。请困在这里,请帮助我解决这个问题。我使用的代码如下:-

records = []
for i in range(0, 13748):
    records.append([str(df.values[i,j]) for j in range(0, 12)])

patterns = pyfpgrowth. find_frequent_patterns(records, 10)

rules = pyfpgrowth. generate_association_rules(patterns,0.8)


def support_count(rhs):
    count=0
    rhs=set(rhs)
    for j in data_item['Items']:
        j=set(j)
        if(rhs.issubset(j)):
            count=count+1
    return count


rhs_support=[]
for i in df_r['Consequent']:
    a=support_count(i)
    rhs_support.append(a/len(data_item))

还有使用FPGrowth计算支撑力和提升力的其他简便方法吗?

提前感谢。

答案

这些计算需要大量计算,并且在大型数据集上可能会很慢。解决此问题的最佳方法之一就是尽可能多地并行运行这些计算。您的本地计算机可能不足以提供所需的速度。

如果您有权使用云计算,我建议您使用pySpark来实现您的目标。 SparkML库内置了FPGrowth,我已使用它构建了一个生产推荐系统,该系统可以处理大约50万种产品的数百万笔交易,整个过程大约需要20分钟,包括您要求的所有指标。当然,这是使用相当大的群集,总共有大约200个内核,因此您自己的性能将与您愿意支付的计算量成正比。

无论如何,如果您从未尝试过,我建议您在Azure平台上研究DataBrick。您可以免费试用,并且实现FPGrowth的代码非常简单。

FPGrowth in SparkML

DataBricks

以上是关于在Python中使用FP-Growth算法确定最频繁的模式的主要内容,如果未能解决你的问题,请参考以下文章

FP-Growth算法之频繁项集的挖掘(python)

《机器学习实战》使用Apriori算法和FP-growth算法进行关联分析(Python版)

FP-Growth算法python实现

FP-Growth算法之FP-tree的构造(python)

在 python 中测试 APriori 和 FP-growth 的实现 [关闭]

Apriori算法与FP-growth算法