2016-09-21 2 views
1

トランザクションデータのMLlibからFPGrowthを使用して基本的なマーケットバスケット分析を実行しようとしています。取引のような形式にするために私がコード化されています:配列内の個々の数字は私のプロダクトIDの文字列は、(のような、68113132893、7976503128、など)として採用されているSpark MLlib FPGrowthは実行中ですが、頻繁な項目セットを表示していません

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

。私は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のサポートがあります。

関連する問題