Скала-MLlib официального документ --- spark.mllib пакет - Частая добыча шаблона + экспортная модель PMML

八, Частая картина горнодобывающей промышленности

Добыча частого пункта, наборов элементов, последовательностей, или других вспомогательных структуры часто являются первым шагом в анализе больших массивов данных, который является предметом активных исследований в добыче данных на протяжении многих лет. Мы рекомендуем вам обратиться к Википедии, чтобы узнать правила объединения для получения дополнительной информации. Обеспечение параллельной реализации FP РОСТА spark.mllib, это популярный алгоритм для добычи часто встречающихся наборов.

FP-рост

ФП - алгоритм. Рост Han и др Paper описал алгоритм для добычи частых образцов без образования кандидата, где «FP» представляет собой частый рисунок. Учитывая набор данных транзакций, то первый шаг должен вычислить FP увеличить частоту проекта и определить частый проект. Подобный алгоритм Apriori предназначен для одной и того же целей разные, FP-роста на втором этапе с помощью суффикса дерева (FP-дерево) коды транзакций структуры, без явного создания набора кандидатов, которые, как правило , дорого. После второго шага, частые наборы пункта могут быть извлечены из дерева FP. В spark.mllib, мы поняли , что параллельная версия называется FP-роста ПИМ, таких как Li и др. , PFP: Параллельный запрос FP-рост для рекомендации. Распределение PFP в соответствии с работой суффиксов дел роста дерева FP, и , следовательно , достичь более масштабируемым , чем автономные. Мы предоставляем пользователь с дополнительной информацией, пожалуйста , обратитесь к этим работам.
spark.mllib из FP-роста достигается с помощью следующих (супер) параметры:

  • minSupport: установить минимальную поддержку проекта, наборы проекта определяются часто. Например, если транзакция происходит в пять 3, который поддерживает скорость 3/5 = 0,6.
  • numPartitions: по количеству разделов, распределять работу.

Пример кода

import org.apache.spark.mllib.fpm.FPGrowth
import org.apache.spark.rdd.RDD

val data = sc.textFile("data/mllib/sample_fpgrowth.txt")

val transactions: RDD[Array[String]] = data.map(s => s.trim.split(' '))

val fpg = new FPGrowth()
  .setMinSupport(0.2)
  .setNumPartitions(10)
val model = fpg.run(transactions)

model.freqItemsets.collect().foreach { itemset =>
  println(s"${itemset.items.mkString("[", ",", "]")},${itemset.freq}")
}

val minConfidence = 0.8
model.generateAssociationRules(minConfidence).collect().foreach { rule =>
  println(s"${rule.antecedent.mkString("[", ",", "]")}=> " +
    s"${rule.consequent .mkString("[", ",", "]")},${rule.confidence}")
}

ассоциативные правила

AssociationRules достичь параллельного алгоритма генерации правила, правило конфигурируется с помощью одного результата.
Пример кода

import org.apache.spark.mllib.fpm.AssociationRules
import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset

val freqItemsets = sc.parallelize(Seq(
  new FreqItemset(Array("a"), 15L),
  new FreqItemset(Array("b"), 35L),
  new FreqItemset(Array("a", "b"), 12L)
))

val ar = new AssociationRules()
  .setMinConfidence(0.8)
val results = ar.run(freqItemsets)

results.collect().foreach { rule =>
println(s"[${rule.antecedent.mkString(",")}=>${rule.consequent.mkString(",")} ]" +
    s" ${rule.confidence}")
}

PrefixSpan

Пейте и др PrefixSpan является: последовательным режим «режим роста путем последовательной горной модели PrefixSpan Метода» описан в разработке алгоритма. Мы приводим ссылки для читателей стандартизированы последовательная картиной проблемы добычи.
spark.mllib из PrefixSpan достигается с использованием следующих параметров:

  • minSupport: рассматривается как минимум, необходимый для поддержания частого последовательного режима.
  • maxPatternLength: Частая максимальная длина последовательного режима. Любой частый рисунок вне этой длины не включаются в результаты.
  • maxLocalProjDBSize: Перед началом баз данных проекта локально итеративной обработки, проецирование префикс базы данных позволил максимальное количество элементов. Этот параметр должен быть отрегулирован в соответствии с размером выполнения программы.

Примеры
Следующие примеры иллюстрируют работу последовательно на PrefixSpan (PEI и др, используя те же обозначения.):

 <(12)3>
  <1(32)(12)>
  <(12)5>
  <6>

Пример кода

import org.apache.spark.mllib.fpm.PrefixSpan

val sequences = sc.parallelize(Seq(
  Array(Array(1, 2), Array(3)),
  Array(Array(1), Array(3, 2), Array(1, 2)),
  Array(Array(1, 2), Array(5)),
  Array(Array(6))
), 2).cache()
val prefixSpan = new PrefixSpan()
  .setMinSupport(0.5)
  .setMaxPatternLength(5)
val model = prefixSpan.run(sequences)
model.freqSequences.collect().foreach { freqSequence =>
  println(
    s"${freqSequence.sequence.map(_.mkString("[", ", ", "]")).mkString("[", ", ", "]")}," +
      s" ${freqSequence.freq}")
}

Десять, PMML модель экспорта (PMML модель получена)

spark.mllib поддерживаются модели

spark.mllib поддержки экспорта моделей в Predictive Model Markup Language (PMML).
В следующей таблице приведены spark.mllib могут быть экспортированы в модели Модель PMML PMML и их эквиваленты.
Here Вставка рисунка Описание

примеров

Для поддержки модели (смотрите таблицу выше) Экспорт в PMML, просто позвоните model.toPMML.
Помимо экспорта моделей PMML строки (model.toPMML выше примера), вы также модель PMML могут быть экспортированы в другие форматы.
Для получения дополнительной информации о API, см KMeans Scala документации и векторы Scala документов.
Вот полный пример для построения KMeansModel и распечатаны в PMML:

import org.apache.spark.mllib.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors

// Load and parse the data
val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()

// Cluster the data into two classes using KMeans
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)

// Export to PMML to a String in PMML format
println(s"PMML Model:\n ${clusters.toPMML}")

// Export the model to a local file in PMML format
clusters.toPMML("/tmp/kmeans.xml")

// Export the model to a directory on a distributed file system in PMML format
clusters.toPMML(sc, "/tmp/kmeans")

// Export the model to the OutputStream in PMML format
clusters.toPMML(System.out)
Освобожденные две оригинальные статьи · вона похвала 0 · Просмотров 625

рекомендация

отblog.csdn.net/pt798633929/article/details/103850221
рекомендация