Emmanuel Portelli Ответов: 0

Разделение набора данных для кросс-валидации 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)
  }

0 Ответов