0
我有以下数据集:星火Mllib - 频繁模式挖掘 - 关联规则 - 没有得到预期的结果
[A,D]
[C,A,B]
[A]
[A,E,D]
[B,D]
,我试图提取使用频繁模式挖掘利用星火Mllib一些关联规则。对于我有下面的代码:
val transactions = sc.textFile("/user/cloudera/teste")
import org.apache.spark.mllib.fpm.AssociationRules
import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset
val freqItemsets = transactions.repartition(10).map(_.split(",")).flatMap(xs =>
(xs.combinations(1) ++ xs.combinations(2) ++ xs.combinations(3) ++ xs.combinations(4) ++ xs.combinations(5)).filter(_.nonEmpty).map(x => (x.toList, 1L)) ).reduceByKey(_ + _).map{case (xs, cnt) => new FreqItemset(xs.toArray, cnt)}
val ar = new AssociationRules().setMinConfidence(0.8)
val results = ar.run(freqItemsets)
results.collect().foreach { rule =>
println("[" + rule.antecedent.mkString(",")
+ "=>"
+ rule.consequent.mkString(",") + "]," + rule.confidence)}
但提取的所有规则,有信心为1:
[[C=>A],1.0
[[C=>B]],1.0
[A,B]=>[C],1.0
[E=>D]],1.0
[E=>[A],1.0
[A=>B]],1.0
[A=>[C],1.0
[[C,A=>B]],1.0
[[A=>D]],1.0
[E,D]=>[A],1.0
[[A,E=>D]],1.0
[[C,B]=>A],1.0
[[B=>D]],1.0
[B]=>A],1.0
[B]=>[C],1.0
我真的不理解,我在我的代码已经问题...任何人都知道我有什么错误来计算信心?
非常感谢!
喜@ Anony,慕斯,感谢您的答复:) 但为什么它是总是出现值等于1?作为一个真正的信心低于0.8这些规则不应该出现,对吗? –
你已经设置了'.setMinConfidence(0.8)' –