我正在使用Spark 1.5.0(cdh5.5.2)。我在我的交易數據上運行FpGrowth算法,每次都得到不同的結果。我使用linux diff命令檢查了我的交易數據,發現沒有區別。 Scala中的fpgrowth函數中是否有任何隨機種子?爲什麼我每次都得到不同數量的頻繁項目集?是否有任何領帶隨機破碎?另外,我使用的支持值非常低 - 當我增加支持時,此問題不存在。我使用的支持是0.000459。當我增加到0.005我沒有得到錯誤。是否有需要使用的支持的最低門檻?scala spark mllib fpgrowth每次都會返回不同的答案
感謝您的幫助。
這裏是我使用的代碼:)
VAL CONF =新SparkConf( conf.registerKryoClasses(陣列(classOf [ArrayBuffer [字符串]],classOf [ListBuffer [字符串]]))
val sc = new SparkContext(conf)
val data = sc.textFile("path/test_rdd.txt")
val transactions = data.map(x=>(x.split('\t')))
val transactioncount = transactions.count()
print(transactioncount)
print("\n")
transactions.cache()
val fpg = new FPGrowth().setMinSupport(0.000459)
val model = fpg.run(transactions)
print("\n")
print(model.freqItemsets.collect().length)
print("\n")
我在transactioncount中得到相同的數字。但是,當我輸出FPGrowth輸出的RDD長度時,每次都得到不同的數字。
我們很樂意幫助您,但如果沒有可重複的例子,那麼我們就不可能。 –
FPgrowth應該每次都返回完全相同的結果。啓動一個調試器 - 可能有一個錯誤,在你身邊或在Mllib中。 –
這是一個80MB的文件。我試着只對前1000個交易進行測試,但我無法複製Alberto Bonsanto。我會試着看看是否可以用較少的記錄數來模擬問題。我目前正在調試過程中,但是對於相同的輸入文件和相同的截止點,我得到不同的輸出。當支持稍高一點時,沒有問題。 – user1050325