FP:Frequent Pattern
相對於Apriori算法,頻繁模式樹(Frequent Pattern Tree, FPTree)的數據結構更加高效
Apriori原理:如果某個項集是頻繁的,那麼它的所有子集也是頻繁的。反過來,如果一個項集是非頻繁集,那麼它的所有超集(包含該非頻繁集的父集)也是非頻繁的。
from pyspark.ml.fpm import FPGrowth
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.appName("FPGrowthExample")\
.getOrCreate()
df = spark.createDataFrame([
(0, [1, 2, 5]),
(1, [1, 2, 3, 5]),
(2, [1, 2])
], ["id", "items"])
fpGrowth = FPGrowth(itemsCol="items", minSupport=0.5, minConfidence=0.6)
model = fpGrowth.fit(df)
# 頻繁項集
model.freqItemsets.show()
# 關聯規則
model.associationRules.show()
# 根據關聯規則的簡單預測
model.transform(df).show()