pyspark-fpgrowth是否可以只返回封闭的频繁项集?

xesrikrc  于 2021-07-09  发布在  Spark
关注(0)|答案(0)|浏览(201)

计算频繁项集的pygrowth算法返回大量冗余子集。是否可以只返回关闭的频繁项集?
仅供参考:封闭频繁项集-没有相同支持(相同频率)的超集的集。

from pyspark.sql import SparkSession
from pyspark.ml.fpm import FPGrowth
data = [
    [0, 1, 2],
    [0, 1, 2],
    [0, 1, 2],
    [0, 1],
    [3, 4, 5],
]
X = [(i, item_set) for i, item_set in enumerate(data)]

spark = SparkSession.builder.getOrCreate()
fpGrowth = FPGrowth(itemsCol="items", minSupport=0.4)
spark_df = spark.createDataFrame(X, ["id", "items"])
model = fpGrowth.fit(spark_df)
freq_item_sets = model.freqItemsets.select("*").toPandas()

频率项集:
[0] ,和 [1] 频率与 [1 0] 如果我们知道 [1 0] 我们知道其子集的频率是相同的(一般来说,至少相同,但在这种情况下完全相同) [2 0] , [2 1] 以及 [2] 是的子集 [2 1 0] 具有相同的频率和冗余度
只有两个条目: [1 0] 以及 [2 1 0] 如果数据量很大,修复它所需的时间甚至比函数所需的时间还要长 fpGrowth.fit() : model.freqItemsets.select("*").toPandas() 需要很多时间,主要是因为检索所有那些冗余的子集
删除这些冗余规则的后处理也需要很多时间
有一个已解决的问题表明此问题已在spark中处理过(可能仅限于内部?):https://issues.apache.org/jira/browse/spark-6143 但我找不到任何与此相关的api

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题