在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的代码非常简单。
以上是关于在Python中使用FP-Growth算法确定最频繁的模式的主要内容,如果未能解决你的问题,请参考以下文章
《机器学习实战》使用Apriori算法和FP-growth算法进行关联分析(Python版)
FP-Growth算法之FP-tree的构造(python)