代码示例
fgp.txt
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
from pyspark import SparkConf, SparkContext
from pyspark.mllib.fpm import FPGrowth
conf=SparkConf().setAppName(“miniProject”).setMaster(“local[*]”)
sc=SparkContext.getOrCreate(conf)
data = sc.textFile(‘file:///F:/fpg.txt’)
transactions = data.map(lambda line: line.split(’ ')) #\t
#print(transactions)
#print(transactions.glom().collect())
#设置最小支持度 对于支持度阈值minSupport,它的取值大小影响最后的频繁项集的集合大小,支持度阈值越大,则最后的频繁项集数目越少,默认值0.3
minSupport = 0.2
#设置并行分区数 数据并行运行时的数据分块数numPartitions主要在分布式环境的时候有用,如果你是单机Spark,则可以忽略这个参数。
numPartition = 10
model = FPGrowth.train(transactions, minSupport=minSupport, numPartitions=numPartition)
result = model.freqItemsets().collect()
for fi in result:
print(fi)
文章出处 https://www.cnblogs.com/pinard/p/6340162.html
关联规则、支持度(support)、置信度(confidence)、并运用Spark RDD计算
例子:
总共有10000个消费者购买了商品,
其中购买尿布的有1000人,
购买啤酒的有2000人,
购买面包的有500人,
同时购买尿布和啤酒的有800人,
同时购买尿布的面包的有100人。
支持度(support)
支持度:{X, Y}同时出现的概率,例如:{尿布,啤酒}同时出现的概率
support=同时购买{X,Y}的人数/总人数
{尿布,啤酒}的支持度 = 800 / 10000 = 0.08
{尿布,面包}的支持度 = 100 / 10000 = 0.01
注意:{尿布,啤酒}的支持度等于{啤酒,尿布}的支持度,支持度没有先后顺序之分
置信度(confidence)
置信度:购买X的人,同时购买Y的概率,例如:购买尿布的人,同时购买啤酒的概率,而这个概率就是购买尿布时购买啤酒的置信度
confidence(X−>Y)=同时购买{X,Y}的人数购买X的人数
confidence(Y−>X)=同时购买{X,Y}的人数购买Y的人数
( 尿布 -> 啤酒 ) 的置信度 = 800 / 1000 = 0.8
( 啤酒 -> 尿布 ) 的置信度 = 800 / 2000 = 0.4
提升度 (lift)
提升度表示含有X的条件下,同时含有Y的概率,与不含X的条件下却含Y的概率之比。
lift(x->y) = confidence(X−>Y)/ (p(y) / p()-p(x))
(尿布->啤酒) = 800 / 1000 / (2000 + 800 / 10000- (1000+ 800+100))
提升度反映了关联规则中的A与B的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性。