Hy,Korbanalyse mit Spark-FP-Growth
Ich versuche, eine Empfehlung Korbanalyse mit Funken mit FP-Growth-Algorithmus
Ich habe diese Transaktionen
val transactions = sc.parallelize(Seq(
Array("Tuna", "Banana", "Strawberry"),
Array("Melon", "Milk", "Bread", "Strawberry"),
Array("Melon", "Kiwi", "Bread"),
Array("Bread", "Banana", "Strawberry"),
Array("Milk", "Tuna", "Tomato"),
Array("Pepper", "Melon", "Tomato"),
Array("Milk", "Strawberry", "Kiwi"),
Array("Kiwi", "Banana", "Tuna"),
Array("Pepper", "Melon")
))
Jetzt zu bauen I wollen "frequent Punkt"
import org.apache.spark.mllib.fpm.AssociationRules
import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset
val freqItemsets = transactions
.flatMap(xs =>
(xs.combinations(1) ++ xs.combinations(2)).map(x => (x.toList, 1L))
)
.reduceByKey(_ + _)
.map{case (xs, cnt) => new FreqItemset(xs.toArray, cnt)}
val ar = new AssociationRules()
.setMinConfidence(0.4)
val results = ar.run(freqItemsets)
Ich bin mit Assoziationsregeln schließlich die „Regeln“ Ok, bis jetzt
results.collect().foreach { rule =>
println("[" + rule.antecedent.mkString(",")
+ "=>"
+ rule.consequent.mkString(",") + "]," + rule.confidence)
}
Alles zu bekommen, aber nächstes möchte ich Empfehlung für jede Transaktion geben ... Es gibt eine einfache Möglichkeit, das zu tun? sehr schlecht, weil mein scala
istIn RI tun so etwas wie dieses
baskets=function(x){
rulesMatchLHS = is.subset([email protected],x)
suitableRules = rulesMatchLHS & !(is.subset([email protected],x))
order.rules = sort(rules[suitableRules], by = "lift")
}
results = sapply(1:length(trans), function(x) baskets(trans[x]))
Dank für Ihre Zeit
Ich bin nicht wirklich sicher, wonach Sie fragen. – eliasah
Beispiel, für Korb 1 ("Thunfisch", "Banane", "Erdbeere"), welches Produkt empfehle ich für diesen Kunden? – Kardu