【问题标题】:Using FP-Growth algorithm in Python to determine the most frequent pattern在 Python 中使用 FP-Growth 算法来确定最频繁的模式
【发布时间】:2023-03-18 05:00:02
【问题描述】:

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

【问题讨论】:

    标签: python machine-learning data-science recommendation-engine fpgrowth


    【解决方案1】:

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

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

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

    FPGrowth in SparkML

    DataBricks

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 1970-01-01
      • 2017-09-06
      • 2014-04-12
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      相关资源
      最近更新 更多