Разделение набора данных для кросс-валидации fpgrowth в spark
Я пытаюсь реализовать алгоритм FPGrowth с использованием MLLIB Spark, но не знаю, как действовать дальше. Я видел несколько примеров, но не включаю перекрестную проверку, когда набор данных разделяется на обучение и тестирование.
// Recommendation engine can be per league // "Ligue 1" // "Bundesliga " // important to add space character after bundesliga due to switch case implementation in data generation // "La Liga" // "Premier League" // "Seria A" var league = "" if(args.length > 0){ league = args(0).toString } def generateRecommendations(hc:HiveContext,sc : SparkContext, leagueName : String) = { // Recommendations per league filter var leagueCondition = "" if(leagueName != ""){ leagueCondition = " and leagueName = '" + leagueName } println("\n\nAbout to get recommendationengine.sportsbookbets\n\n") // Has all customers and their bets var queryToGroupCustomers = "SELECT yt.userid as player, " + " concat_ws(\",\", collect_set(match)) AS matchesPlayedOn" + //concat_ws() " FROM recommendationengine.sportsbookbets_orc yt" + " where yt.userid is not null " + leagueCondition + "' " + "GROUP BY yt.userid limit 2" println("Executing query: \n\n" + queryToGroupCustomers) var results = hc.sql(queryToGroupCustomers)
У меня есть запрос выше, где я бы запустил алгоритм на выбранном имени лиги. Я мог бы запустить это с помощью обычного алгоритма, но понятия не имею, как реализовать его в кросс-валидации и сохранить в таблицах в соответствии с лигой, а также обучить или протестировать. Я был бы признателен за любую помощь и рекомендации...спасибо
Что я уже пробовал:
Вот как далеко я зашел, но это всего лишь обычный алгоритм.
println("Executing query: \n\n" + queryToGroupCustomers) var results = hc.sql(queryToGroupCustomers) val transactions: RDD[Array[String]] = results.rdd.map( row => row.get(2).toString.split(",")) // Set configurations for FP-Growth var fpg = new FPGrowth() .setMinSupport(0.5) .setNumPartitions(10) // Generate model var model = fpg.run(transactions); println("\n\n Starting FPGrowth\n\n") model.freqItemsets.collect().foreach { itemset => println(itemset.items.mkString("[", ",", "]") + ", " + itemset.freq) }