Как сохранить линейную регрессионную модель в PySpark 1.4.2? [Дубликат]

Вот пример использования API cookie DOM ( https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie ), поэтому мы можем видеть

Если мы выполним следующий JavaScript:

document.cookie = "key = value"

blockquote>

Появляется чтобы быть таким же, как выполнение:

document.cookie = "key = value; domain = mydomain.com"

blockquote>

Кнопка cookie становится доступным (только) в домене mydomain.com .


Теперь, если вы выполните следующий JavaScript на mydomain.com:

document.cookie = "key = value; domain = .mydomain.com"

blockquote>

Кнопка cookie становится доступной для mydomain. com , а также subdomain.mydomain.com .


Наконец, если вы попытаетесь выполнить следующее на subdomain.mydomain.com:

document.cookie = "key = value; domain = .mydomain.com"

blockquote>

Доступна ли кнопка cookie для subdomain.mydomain.com ? Я был немного удивлен, что это разрешено; Я предположил, что было бы нарушением безопасности для субдомена, чтобы он мог установить cookie в родительском домене.

20
задан Alberto Bonsanto 9 October 2015 в 00:09
поделиться

2 ответа

Spark 2.0.0 +

На первый взгляд все Transformers и Estimators реализуют MLWritable. Если вы используете Spark & ​​lt; = 1.6.0 и испытываете некоторые проблемы с сохранением модели, я бы предложил версию переключения.

Spark> = 1.6

Так как Spark 1.6 можно сохранить ваши модели с помощью метода save. Потому что почти каждый model реализует интерфейс MLWritable . Например, у него есть LinearRegressionModel , и поэтому вы можете сохранить свою модель на нужный путь, используя ее.

Spark & ​​lt; 1.6

Я считаю, что вы делаете неверные предположения здесь.

Некоторые операции над DataFrames можно оптимизировать, и это переводит на улучшенную производительность по сравнению с обычным RDDs. DataFrames обеспечивают эффективное кэширование и SQLish API, возможно, легче понять, чем RDD API.

ML Трубопроводы чрезвычайно полезны, и инструменты, такие как кросс-валидатор или разные оценщики, просто должны быть в любом конвейере машины, и даже если ни одно из вышеперечисленных не особенно сложно реализовать поверх низкоуровневого MLlib API, гораздо лучше иметь готовое к использованию универсальное и относительно хорошо проверенное решение.

Пока все хорошо, но есть несколько проблем:

  • насколько я могу скажите простые операции на DataFrames, как select или withColumn, показывают аналогичную производительность с его эквивалентами RDD, такими как map,
  • , в некоторых случаях увеличение количества столбцов в типичном конвейере может фактически ухудшить по сравнению с хорошо настроенными преобразованиями низкого уровня. Вы можете, конечно, добавить drop-column-transformers на пути исправления для этого,
  • многие ML-алгоритмы, включая ml.classification.NaiveBayes , являются просто обертками вокруг его API mllib
  • Алгоритмы PySpark ML / MLlib делегируют фактическую обработку своим коллегам Scala,
  • последнее, но не менее важное: RDD по-прежнему существует, даже если он хорошо скрыт за API DataFrame

Я считаю, что в конце дня то, что вы получаете с помощью ML over MLLib, довольно элегантно, API высокого уровня. Единственное, что вы можете сделать, это объединить оба для создания настраиваемого многоэтапного конвейера:

  • использовать ML для загрузки, очистки и преобразования данных,
  • извлечь требуемые данные (см. например, extractLabeledPoints ) и перейти к алгоритму MLLib,
  • добавить пользовательскую перекрестную проверку / оценку
  • сохранить MLLib модель, используя метод ваш выбор (модель искры или PMML )

Это не оптимальное решение, но лучшее, что я могу представить с учетом текущего API.

22
ответ дан DiligentKarma 21 August 2018 в 23:11
поделиться

Кажется, что функциональность API для сохранения модели на сегодняшний день не реализована (см. Трекер ошибок Spark SPARK-6725 ).

Была опубликована альтернатива ( Как сохранить модели от ML Pipeline до S3 или HDFS? ), который предполагает просто сериализацию модели, но является Java-подходом. Я ожидаю, что в PySpark вы можете сделать что-то подобное, т. Е. Рассортировать модель для записи на диск.

5
ответ дан Community 21 August 2018 в 23:11
поделиться
  • 1
    Я ожидаю, что в PySpark вы можете сделать что-то подобное, то есть pickle - возможно, но это будет непросто. Поскольку PySpark ML в основном является оберткой Scala API, нужно было бы обеспечить, чтобы модель Scala была правильно сериализована / десериализована одновременно. – zero323 9 October 2015 в 11:49
  • 2
    Я мог бы сделать это с помощью scala, но мне нужно было сделать это на python: | – Alberto Bonsanto 10 October 2015 в 14:40
  • 3
    +1 есть ли простой способ (или любой способ) сохранить модель pyspark.ml? Невозможно найти на нем какую-либо документацию – ajkl 19 July 2016 в 17:28
Другие вопросы по тегам:

Похожие вопросы: