Spark MLlib FPGrowth正在运行但不显示频繁的项目集

时间:2016-09-21 05:23:00

标签: apache-spark market-basket-analysis

我正在尝试使用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 = org.apache.spark.mllib.fpm.FPGrowth@74a103be
    modelBuild: org.apache.spark.mllib.fpm.FPGrowthModel[String] = org.apache.spark.mllib.fpm.FPGrowthModel@391b111a

但是当我尝试获取频繁项目集时,它显示空白数组

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

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

无法找到出错的地方。请帮忙!

1 个答案:

答案 0 :(得分:3)

将minSupport减少到0.00001,将打印所有集。来自Spark文档:

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