0

我使用 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 计算支撑和提升?

4

1 回答 1

0

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

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

无论如何,如果您以前从未尝试过,我建议您查看 Azure 平台上的 DataBricks。您可以免费试用,实现 FPGrowth 的代码非常简单。

SparkML 中的 FPG 增长

数据砖

于 2020-06-01T13:43:05.563 回答