当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark FPGrowth用法及代码示例


本文简要介绍 pyspark.ml.fpm.FPGrowth 的用法。

用法:

class pyspark.ml.fpm.FPGrowth(*, minSupport=0.3, minConfidence=0.8, itemsCol='items', predictionCol='prediction', numPartitions=None)

用于挖掘频繁项集的并行FP-growth算法。

2.2.0 版中的新函数。

注意

Li 等人的 PFP: Parallel FP-Growth for QueryRecommendation [1] 中说明了该算法。 PFP 以这样的方式分配计算,即每个工作人员执行一组独立的挖掘任务。 Han 等人在无需生成候选的情况下挖掘频繁模式 [2] 中说明了 FP-Growth 算法

fit() 期间忽略特征列中的 NULL 值。

内部 transform collectsbroadcasts 关联规则。

1

Haoyuan Li、Yi Wang、Dong Zhang、Ming Zhang 和 Edward Y. Chang。 2008. Pfp:用于查询推荐的并行fp-growth。在 2008 年 ACM 推荐系统会议论文集中 (RecSys ‘08)。计算机协会,纽约,纽约,美国,107-114。 DOI:https://doi.org/10.1145/1454008.1454027

2

韩嘉伟、简培、尹伊文。 2000. 在没有候选生成的情况下挖掘频繁模式。 SIGMOD 推荐29,2(2000 年 6 月),1-12。 DOI:https://doi.org/10.1145/335191.335372

例子

>>> from pyspark.sql.functions import split
>>> data = (spark.read
...     .text("data/mllib/sample_fpgrowth.txt")
...     .select(split("value", "\s+").alias("items")))
>>> data.show(truncate=False)
+------------------------+
|items                   |
+------------------------+
|[r, z, h, k, p]         |
|[z, y, x, w, v, u, t, s]|
|[s, x, o, n, r]         |
|[x, z, y, m, t, s, q, e]|
|[z]                     |
|[x, z, y, r, q, t, p]   |
+------------------------+
...
>>> fp = FPGrowth(minSupport=0.2, minConfidence=0.7)
>>> fpm = fp.fit(data)
>>> fpm.setPredictionCol("newPrediction")
FPGrowthModel...
>>> fpm.freqItemsets.show(5)
+---------+----+
|    items|freq|
+---------+----+
|      [s]|   3|
|   [s, x]|   3|
|[s, x, z]|   2|
|   [s, z]|   2|
|      [r]|   3|
+---------+----+
only showing top 5 rows
...
>>> fpm.associationRules.show(5)
+----------+----------+----------+----+------------------+
|antecedent|consequent|confidence|lift|           support|
+----------+----------+----------+----+------------------+
|    [t, s]|       [y]|       1.0| 2.0|0.3333333333333333|
|    [t, s]|       [x]|       1.0| 1.5|0.3333333333333333|
|    [t, s]|       [z]|       1.0| 1.2|0.3333333333333333|
|       [p]|       [r]|       1.0| 2.0|0.3333333333333333|
|       [p]|       [z]|       1.0| 1.2|0.3333333333333333|
+----------+----------+----------+----+------------------+
only showing top 5 rows
...
>>> new_data = spark.createDataFrame([(["t", "s"], )], ["items"])
>>> sorted(fpm.transform(new_data).first().newPrediction)
['x', 'y', 'z']
>>> model_path = temp_path + "/fpm_model"
>>> fpm.save(model_path)
>>> model2 = FPGrowthModel.load(model_path)
>>> fpm.transform(data).take(1) == model2.transform(data).take(1)
True

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.ml.fpm.FPGrowth。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。