pyspark:FPgrowth

原理

https://blog.csdn.net/sunbow0/article/details/45602415

https://www.cnblogs.com/haozhengfei/p/c9f211ee76528cffc4b6d741a55ac243.html

代码

from pyspark import SparkConf
from pyspark.sql import SparkSession
from pyspark.ml.fpm import FPGrowth
import datetime
if __name__ == "__main__":
    t1=datetime.datetime.now()
    appname = "FPgrowth"
    master ="local[4]" 
    
    data_list=[[['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']]]#数据集
    conf = SparkConf().setAppName(appname).setMaster(master)  #spark配置                
    spark=SparkSession.builder.config(conf=conf).getOrCreate()
    data=spark.createDataFrame(data_list,["items"])#将数据转为spark中的dataframe
    fp = FPGrowth(minSupport=0.5, minConfidence=0.8)#模型建立
    fpm  = fp.fit(data)#模型拟合
    fpm .freqItemsets.show(5)#在控制台显示前五条频繁项集
    assRule=fpm.associationRules#强关联规则
    assRuleDf=assRule.toPandas()#转为python中的dataframe  
    print('强关联规则:\n',assRuleDf)
    new_data = spark.createDataFrame([(["s", "t"], )], ["items"])#新的前项数据
    print('后项预测:\n',fpm.transform(new_data).first().prediction) #预测后项               
    spark.stop()#关闭spark
    t2=datetime.datetime.now()
    print('spent ts:',t2-t1)

运行结果:

注意:lift为提升度,表示在含有X的条件下同时含有Y的可能性与没有X这个条件下项集中含有Y的可能性之比:公式为confidence(artichok => cracker)/support(cracker) = 80%/50% = 1.6。该指标与置信度同样衡量规则的可靠性,可以看作是置信度的一种互补指标。 

发布了45 篇原创文章 · 获赞 94 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_23860475/article/details/90748080
今日推荐