Деревья решений Spark MLib: Вероятность ярлыков по признакам?

Мне удалось отобразить общие вероятности моих labels , например, после отображения моего дерева решений, у меня есть таблица:

 Total Predictions : 65% impressions 30% clicks 5% conversions 

Но моя проблема – найти вероятности (или подсчитать) с помощью features (по узлу), например:

 if feature1 > 5 if feature2 < 10 Predict Impressions samples : 30 Impressions else feature2 >= 10 Predict Clicks samples : 5 Clicks 

Scikit делает это автоматически, я пытаюсь найти способ сделать это с помощью Spark

One Solution collect form web for “Деревья решений Spark MLib: Вероятность ярлыков по признакам?”

Примечание. Следующее решение предназначено только для Scala. Я не нашел способ сделать это в Python.

Предполагая, что вам просто нужно визуальное представление дерева, как в вашем примере, возможно, одним из вариантов является адаптация метода subtreeToString присутствующего в коде Node.scala на GitHub Spark, для включения вероятностей на каждом разбиении узлов, как в следующем фрагменте:

 def subtreeToString(rootNode: Node, indentFactor: Int = 0): String = { def splitToString(split: Split, left: Boolean): String = { split.featureType match { case Continuous => if (left) { s"(feature ${split.feature} <= ${split.threshold})" } else { s"(feature ${split.feature} > ${split.threshold})" } case Categorical => if (left) { s"(feature ${split.feature} in ${split.categories.mkString("{", ",", "}")})" } else { s"(feature ${split.feature} not in ${split.categories.mkString("{", ",", "}")})" } } } val prefix: String = " " * indentFactor if (rootNode.isLeaf) { prefix + s"Predict: ${rootNode.predict.predict} \n" } else { val prob = rootNode.predict.prob*100D prefix + s"If ${splitToString(rootNode.split.get, left = true)} " + f"(Prob: $prob%04.2f %%)" + "\n" + subtreeToString(rootNode.leftNode.get, indentFactor + 1) + prefix + s"Else ${splitToString(rootNode.split.get, left = false)} " + f"(Prob: ${100-prob}%04.2f %%)" + "\n" + subtreeToString(rootNode.rightNode.get, indentFactor + 1) } } 

Я тестировал его на модели, которую я запускал в наборе данных Iris , и у меня есть следующий результат:

 scala> println(subtreeToString(model.topNode)) If (feature 2 <= -0.762712) (Prob: 35.35 %) Predict: 1.0 Else (feature 2 > -0.762712) (Prob: 64.65 %) If (feature 3 <= 0.333333) (Prob: 52.24 %) If (feature 0 <= -0.666667) (Prob: 92.11 %) Predict: 3.0 Else (feature 0 > -0.666667) (Prob: 7.89 %) If (feature 2 <= 0.322034) (Prob: 94.59 %) Predict: 2.0 Else (feature 2 > 0.322034) (Prob: 5.41 %) If (feature 3 <= 0.166667) (Prob: 50.00 %) Predict: 3.0 Else (feature 3 > 0.166667) (Prob: 50.00 %) Predict: 2.0 Else (feature 3 > 0.333333) (Prob: 47.76 %) Predict: 3.0 

Аналогичный подход может быть использован для создания древовидной структуры с этой информацией. Основное различие split.feature , чтобы хранить печатную информацию ( split.feature , split.threshold , predict.prob и т. Д.) В качестве vals и использовать их для построения структуры.

  • Запуск пользовательского класса Java в PySpark
  • чтение и запись из таблиц улей с искровым светом после агрегации
  • Время икры иглы увеличивается экспоненциально при использовании соединения
  • Spark Dataframe различает столбцы с дублированным именем
  • Как найти квантили, используя Spark
  • В чем разница между spark-submit и pyspark?
  • используя foreachRDD и foreach для итерации по rdd в pyspark
  • Невозможно десериализовать RDD с различным количеством элементов в паре
  •  
    Interesting Posts for Van-Lav

    Как я могу получить атрибут виджета Tkinter?

    Можно ли получить полный исходный код веб-сайта, включая css, только указав URL-адрес веб-сайта? + Python

    Как настроить Sphinx для условного исключения некоторых страниц?

    Вызов скрипта python из командной строки без ввода «python» сначала

    python: Существующее соединение было принудительно закрыто удаленным хостом

    Почему этот назначенный объект имеет то же пространство памяти, что и исходный объект?

    Python и Yahoo финансы странные "YQLQueryError (ответ )" get_historical

    Отображение изображения с консоли в Python

    шаблоны проектирования python

    Подстановка параметров для предложения SQLite "IN"

    Как вводить и обрабатывать аудиофайлы для преобразования в текст через pyspeech или dragonfly

    django 1.4 как автоматически получить часовой пояс пользователя от клиента

    Как я могу профилировать код python по очереди?

    Вызов импорта в модуле

    Как добавить настраиваемый тип к разборным типам укропа

    Python - лучший язык программирования в мире.