【问题标题】:Spark MLlib FPGrowth running but not displaying frequent item setsSpark MLlib FPGrowth 正在运行但不显示频繁项集
【发布时间】:2016-09-21 05:23:00
【问题描述】:

我正在尝试使用 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()

找不到问题所在。请帮忙!

【问题讨论】:

    标签: apache-spark market-basket-analysis


    【解决方案1】:

    将 minSupport 降低到 0.00001 并打印所有集合。来自 Spark 文档:

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

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 2018-11-06
      • 2017-04-11
      相关资源
      最近更新 更多