2016-09-21 65 views
1

我正在尝试使用MLlib中的FPGrowth对交易数据进行基本的市场购物篮分析。我已编码的交易是像格式:Spark MLlib FPGrowth正在运行但不显示频繁项集

transactions.take(3) 
    res632: Array[Array[String]] = Array(Array(7976503128), Array(68113132893, 1800000725, 3120027015, 4850030414, 2100061223, 5150055538, 60538871457), Array(68113174202)) 

凡在阵列中的各个数字是我的产品的ID作为字符串(例如,68113132893,7976503128,等等)。

现在,当我运行的FPGrowth模型,它运行没有任何错误:

val fpg = new FPGrowth() 
     .setMinSupport(0.5) 
     .setNumPartitions(10) 
    val modelBuild = fpg.run(transactions) 

    fpg: org.apache.spark.mllib.fpm.FPGrowth = [email protected] 
    modelBuild: org.apache.spark.mllib.fpm.FPGrowthModel[String] = [email protected] 

当我试图让频繁项集,它显示空白阵列

modelBuild.freqItemsets.collect().foreach { itemset => 
    println(itemset.freq) 
    } 

    res660: Array[org.apache.spark.mllib.fpm.FPGrowth.FreqItemset[String]] = Array() 

无法找到问题所在。请帮忙!

回答

2

将minSupport减小到0.00001并打印所有设置。来自Spark文档:

minSupport:对项目集的最小支持被标识为频繁。例如,如果一个项目出现在5个交易中的3个,则它具有3/5 = 0.6的支持。