3D сады


Как развести искру от вредителей


«Искра» двойной эффект - защита от насекомых вредителей, инструкция по применению средства от тли, долгоносика, клещей

Препарат инсектицид «Искра двойной эффект» инструкция по применению от вредителей

Препарат «Искра» от вредителей создан отечественными специалистами, предназначен он не только для борьбы с «вредными» жучками на территории сада и огорода. В его составе – ингредиенты, позволяющие укреплять иммунитет растений, а также стимулировать их рост и созревание плодов.

Инсектицидный препарат «Искра» двойной эффект защищает растения от вредителей на протяжении 3 недель. Однако нужно помнить – данный препарат нельзя использовать в период бутонизации и цветения садовых и огородных культур.

«Искра двойной эффект» защита от насекомых - состав препарата

В составе препарата «Искра» содержится несколько активных ингредиентов:

  • Циперметрин;
  • Перметрин;
  • Калийные добавки.

Действующие вещества разрушают нервную систему «вредных» жучков, нарушая передачу импульсов и вызывая паралич.

В организм насекомых препарат попадает контактно-кишечным путем. Действие инсектицида Искра двойной эффект начинается сразу после его попадания в организм насекомых, их гибель наступает через 1/6 часа.

Калийные добавки, входящие в состав препарата, укрепляют иммунную систему растений, способствуют ускорению восстановительного процесса в вегетативной массе растений, поврежденной вредителями.

Искра от насекомых вредителей - видео

Форма выпуска

Данный препарат выпускается в форме таблеток, хорошо растворимых даже в холодной воде. Искра таблетка двойной эффект растворяется в холодной воде непосредственно перед использованием. Концентрированное средство тщательно размешивается, чтобы не оставалось осадка. Использовать полученный раствор нужно согласно инструкции по применению.

Важно! Срок хранения готового раствора этого инсектицида можно не более 3 дней, но с течением времени его эффективность падает.

Искра двойной эффект - инструкция по применению

Готовить раствор следует непосредственно перед обработкой садовых или огородных культур. 1 таблетку Искры бросают в литр воды (можно холодной), хорошо размешивают, затем в этот раствор добавляют воду, доводя общее количество жидкости до 10 литров. Инсектицид распыляют из садового пульверизатора.

Искра двойной эффект - инструкция по применению от производителя

Обработку следует проводить только в сухое безветренное время, оптимально – до 9 утра или после 7 вечера. При распылении нужно вставать так, чтобы брызги не попадали на тело. С момента приготовления раствора и до окончания работ следует находиться в защитном костюме, одевать резиновые перчатки и респиратор.

Средство всасывается листвой растений и начинает действовать в течение 120 минут. Если в этот период пошел дождь, то обработку повторяют.

Важно! Производить обработку садовых и огородных культур в период цветения и за пару недель до сбора спелых продуктов запрещено.

Если вредителей слишком много, то обработку препаратом Искра двойной эффект повторяют через 10-12 дней после первой.

Обрабатывать следует не только верхнюю, но и нижнюю сторону листовых пластин – большинство «вредных» жучков и их личинок находятся на нижней стороне листьев.

Действие инсектицида Искра двойной эффект на вредителей

Искра двойной эффект прекрасно помогает от тли, от долгоносика, от клещей. Также можно использовать инсектицид от паутинного клеща, помогает препарат одинаково быстро от всех перечисленных вредителей.

Через пару часов после обработки Искра всасывается листвой растений, после этого уже не страшен ни дождь, ни палящие лучи солнца – на эффективность данного яда эти природные явления уже не влияют.

Главные достоинства данного инсектицида:

  1. быстрый эффект после применения;
  2. продолжительное действие препарата – до 3 недель;
  3. отличается безопасностью, так как полностью выводится из зеленой массы растений через месяц после обработки;
  4. универсальность – воздействует на более 50 видов вредителей;
  5. экономичность, препарат выпускается в виде концентрированных таблеток, поэтому разводится в большом количестве воды;
  6. с помощью данного препарата культуры быстрее восстанавливаются после воздействия «вредных» жучков;
  7. невысокая цена Искры, удобство применения.

Хотя этот препарат не губит дождевых червей, но смертелен для летающих насекомых-опылителей. Поэтому в период цветения Искру не применяют.

Препарат применяется, в частности, для обработки яблони, для клубники, для комнатных растений и большинства овощных культур.

Как действует инсектицид «Искра» совместно с другими препаратами

Данных о совместимости данного препарата с другими инсектицидами и о возможности их одновременного применения нет. Но Искра двойной эффект отличается способностью убивать более 50 видов садовых и овощных вредителей, поэтому необходимости применять одновременно с ней другие инсектициды нет.

Меры предосторожности

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

Вопросы садоводов и огородников

Ниже приведены наиболее часто встречающиеся вопросы читателей, возникающие по поводу инсектицидного препарата Искра.

Препарат искра двойной эффект - когда применять?

Это инсектицидное вещество с успехом применяют в течение всего теплого сезона для обработки садовых и овощных культур против вредителей. Исключение составляет период цветения. Также прекращают применение инсектицида за 10-12 дней до начала сбора урожая.


Искра двойной эффект от каких вредителей помогает?

Данный препарат эффективно справляется со следующими «вредными» жучками:

  • цветоедами;
  • молью;
  • листоверткой;
  • плодожоркой;
  • тлей;
  • вишневой мухой;
  • белокрылкой;
  • трипсами;
  • колорадским жуком;
  • белянкой и многими другими «вредными» жучками.

Искра двойной эффект - срок ожидания после обработки?

Данный препарат начинает действовать мгновенно после попадания в организм насекомых – они погибают через 10 минут.

Средство Искра двойной эффект - когда опрыскивать?

Обработку растений данным препаратом нужно проводить с раннего утра или после заката солнца в сухую и безветренную погоду.

Искра двойной эффект: отзывы тех, кто использовал

Отзывов о препарате Искра двойной эффект довольно много, средство давно известно садоводам, цветоводам и огородникам.

Ольга:
Использую Искру двойной эффект для комнатных цветов, опрыскиваю их разведенным средством по инструкции. Это химикат, поэтому соблюдаю при обработке растений этим инсектицидом все меры безопасности: перчатки, маска, отсутствие домашних животных в комнате. Считаю. что искра - отличное средство для борьбы с вредителями.

Анатолий:
Препарат имеет в названии "двойной эффект" благодаря содержанию в составе действующих веществ - циперметрин и перметрин. Делал обработку Искрой картофеля от колорадского жука - действительно эффективное средство. Сейчас много разных существует, "Искра двойной эффект" - довольно популярный инсектицид, который помогает справиться с 60 различными вредителями, по заявлению производителя.

Первые шаги с PySpark и обработкой больших данных - Real Python

Все чаще встречаются ситуации, когда объем данных слишком велик для обработки на одной машине. К счастью, такие технологии, как Apache Spark, Hadoop и другие, были разработаны для решения именно этой проблемы. Возможности этих систем можно использовать непосредственно из Python с помощью PySpark!

Эффективная обработка наборов данных размером в гигабайты и более вполне доступна любому разработчику Python , будь то специалист по данным, веб-разработчик или кто-то еще.

В этом руководстве вы узнаете:

  • Какие концепции Python можно применить к большим данным
  • Как использовать Apache Spark и PySpark
  • Как писать базовые программы PySpark
  • Как запускать программы PySpark на небольших наборах данных локально
  • Что делать дальше, чтобы перенести свои навыки PySpark в распределенную систему?

Концепции больших данных в Python

Несмотря на свою популярность как всего лишь как язык сценариев, Python предлагает несколько парадигм программирования, таких как массивно-ориентированное программирование, объектно-ориентированное программирование, асинхронное программирование и многие другие.Одна парадигма, которая представляет особый интерес для начинающих профессионалов в области больших данных, - это функциональное программирование.

Функциональное программирование - распространенная парадигма, когда вы имеете дело с большими данными. Функциональное написание кода приводит к досадно параллельному коду. Это означает, что проще взять код и запустить его на нескольких процессорах или даже на совершенно разных машинах. Вы можете обойти ограничения физической памяти и ЦП одной рабочей станции, запустив одновременно несколько систем.

Это мощь экосистемы PySpark, позволяющая брать функциональный код и автоматически распределять его по всему кластеру компьютеров.

К счастью для программистов Python, многие из основных идей функционального программирования доступны в стандартной библиотеке Python и встроенных модулях. Вы можете изучить многие концепции, необходимые для обработки больших данных, не покидая комфортной среды Python.

Основная идея функционального программирования заключается в том, что данные должны управляться функциями без поддержки какого-либо внешнего состояния.Это означает, что ваш код избегает глобальных переменных и всегда возвращает новых данных вместо того, чтобы манипулировать данными на месте.

Еще одна распространенная идея функционального программирования - анонимные функции. Python предоставляет анонимные функции с использованием ключевого слова lambda , не путать с функциями AWS Lambda.

Теперь, когда вы знаете некоторые термины и концепции, вы можете изучить, как эти идеи проявляются в экосистеме Python.

Лямбда-функции

.

Краткое введение в PySpark. PySpark - отличный язык для… | Бен Вебер

Источник: Викимедиа (Венский технический музей)

Учебник по PySpark для науки о данных

PySpark - отличный язык для выполнения масштабного исследовательского анализа данных, построения конвейеров машинного обучения и создания ETL для платформы данных. Если вы уже знакомы с Python и такими библиотеками, как Pandas, тогда PySpark - отличный язык для изучения, чтобы создавать более масштабируемые анализы и конвейеры.Цель этого поста - показать, как приступить к работе с PySpark и выполнять общие задачи.

Мы будем использовать Databricks для среды Spark и набор данных NHL от Kaggle в качестве источника данных для анализа. В этом посте показано, как читать и записывать данные в фреймы данных Spark, создавать преобразования и агрегаты этих фреймов, визуализировать результаты и выполнять линейную регрессию. Я также покажу, как смешивать обычный код Python с PySpark масштабируемым образом, используя пользовательские функции Pandas. Чтобы упростить задачу, мы сосредоточимся на пакетной обработке и избежим некоторых сложностей, которые возникают при конвейерах потоковой передачи данных.

Полный блокнот для этого поста доступен на github.

Среда

Существует несколько различных вариантов запуска и работы с Spark:

  • Самостоятельный хостинг: Вы можете настроить кластер самостоятельно, используя голые машины или виртуальные машины. Apache Ambari - полезный проект для этого варианта, но я не рекомендую его для быстрого начала работы.
  • Облачные провайдеры: Большинство облачных провайдеров предлагают кластеры Spark: AWS имеет EMR, а GCP имеет DataProc.Раньше я писал о DataProc в блоге, и вы можете получить интерактивную среду быстрее, чем самостоятельный хостинг.
  • Решения для поставщиков: Компании, включая Databricks и Cloudera, предоставляют решения Spark, что упрощает запуск и работу с Spark.

Используемое решение зависит от безопасности, стоимости и существующей инфраструктуры. Если вы пытаетесь приступить к работе со средой для обучения, я бы предложил использовать Databricks Community Edition.

Создание кластера PySpark в Databricks Community Edition.

В этой среде легко приступить к работе с кластером Spark и средой ноутбука. Для этого руководства я создал кластер со средой выполнения Spark 2.4 и Python 3. Для запуска кода, приведенного в этом посте, вам понадобится по крайней мере Spark версии 2.3 для функциональности Pandas UDF.

Spark Dataframes

Ключевым типом данных, используемым в PySpark, является фрейм данных Spark. Этот объект можно рассматривать как таблицу, распределенную по кластеру, и ее функциональность аналогична фреймам данных в R и Pandas.Если вы хотите выполнять распределенные вычисления с использованием PySpark, вам необходимо выполнять операции с фреймами данных Spark, а не с другими типами данных Python.

Также можно использовать фреймы данных Pandas при использовании Spark, вызвав toPandas () для фрейма данных Spark, который возвращает объект pandas. Однако этой функции обычно следует избегать, за исключением работы с небольшими фреймами данных, поскольку она извлекает весь объект в память на одном узле.

Одно из ключевых различий между фреймами данных Pandas и Spark - нетерпеливое и отложенное выполнение.В PySpark операции откладываются до тех пор, пока результат не понадобится в конвейере. Например, вы можете указать операции для загрузки набора данных из S3 и применения ряда преобразований к фрейму данных, но эти операции не будут применяться немедленно. Вместо этого записывается граф преобразований, и как только данные действительно необходимы, например, при записи результатов обратно в S3, преобразования применяются как единая конвейерная операция. Этот подход используется, чтобы избежать втягивания полного фрейма данных в память и обеспечивает более эффективную обработку в кластере машин.С фреймами данных Pandas все загружается в память, и каждая операция Pandas применяется немедленно.

Как правило, рекомендуется избегать активных операций в Spark, если это возможно, поскольку это ограничивает объем вашего конвейера, который может быть эффективно распределен.

Чтение данных

Одним из первых шагов, которые необходимо изучить при работе со Spark, является загрузка набора данных в фрейм данных. После загрузки данных в фрейм данных вы можете применять преобразования, выполнять анализ и моделирование, создавать визуализации и сохранять результаты.В Python вы можете загружать файлы непосредственно из локальной файловой системы с помощью Pandas:

 import pandas as pd 
pd.read_csv ("dataset.csv")

В PySpark загрузка файла CSV немного сложнее. В распределенной среде нет локального хранилища, и поэтому для указания пути к файлу необходимо использовать распределенную файловую систему, такую ​​как HDFS, файловое хранилище Databricks (DBFS) или S3.

Обычно при использовании PySpark я работаю с данными в S3. Многие базы данных обеспечивают функцию выгрузки в S3, а также можно использовать консоль AWS для перемещения файлов с локального компьютера на S3.Для этого поста я буду использовать файловую систему Databricks (DBFS), которая предоставляет пути в виде / FileStore . Первый шаг - загрузить CSV-файл, который вы хотите обработать.

Загрузка файла в хранилище файлов Databricks.

Следующим шагом является чтение файла CSV в фрейм данных Spark, как показано ниже. Этот фрагмент кода указывает путь к CSV-файлу и передает ряд аргументов функции read для обработки файла. Последний шаг отображает подмножество загруженного фрейма данных, подобное df.head () в пандах.

 file_location = "/FileStore/tables/game_skater_stats.csv"df = spark.read.format (" csv "). Option (" inferSchema ", 
True) .option (" header ", True) .load (file_location) display (df)

Я предпочитаю использовать паркетный формат при работе со Spark, потому что это формат файла, который включает метаданные о типах данных столбца, предлагает сжатие файлов и является форматом файла, который разработан для хорошей работы со Spark. AVRO - еще один формат, который хорошо работает со Spark.В приведенном ниже фрагменте показано, как взять фрейм данных из предыдущего фрагмента и сохранить его как файл parquet в DBFS, а затем повторно загрузить фрейм данных из сохраненного файла parquet.

 df.write.save ('/ FileStore / parquet / game_skater_stats', 
format = 'parquet') df = spark.read.load ("/ FileStore / parquet / game_skater_stats")
display (df)

Результат этого шага такая же, но последовательность выполнения существенно отличается. При чтении файлов CSV в фреймы данных Spark выполняет операцию в режиме ожидания, что означает, что все данные загружаются в память до того, как начнется выполнение следующего шага, в то время как при чтении файлов в паркетном формате используется ленивый подход.Как правило, при работе со Spark нужно избегать нетерпеливых операций, и если мне нужно обработать большие файлы CSV, я сначала преобразую набор данных в формат паркета, прежде чем выполнять остальную часть конвейера.

Часто вам нужно обработать большое количество файлов, например, сотни паркетных файлов, расположенных по определенному пути или каталогу в DBFS. С помощью Spark вы можете включить подстановочный знак в путь для обработки коллекции файлов. Например, вы можете загрузить пакет файлов паркета из S3 следующим образом:

 df = spark.читать .load ("s3a: //my_bucket/game_skater_stats/*.parquet") 

Этот подход полезен, если у вас есть отдельный файл паркета в день или если в вашем конвейере есть предыдущий шаг, который выводит сотни файлов паркета .

Если вы хотите читать данные из базы данных, такой как Redshift, рекомендуется сначала выгрузить данные в S3, а затем обрабатывать их с помощью Spark. В Redshift команду unload можно использовать для экспорта данных в S3 для обработки:

 unload ('select * from data_to_process') 
в 's3: // my_bucket / game_data'
iam_role 'arn: aws: iam :: 123 : роль / RedshiftExport ';

Существуют также библиотеки для баз данных, такие как искр-красное смещение, которые упрощают выполнение этого процесса.

Запись данных

Как и при чтении данных с помощью Spark, при использовании PySpark не рекомендуется записывать данные в локальное хранилище. Вместо этого вам следует использовать распределенную файловую систему, такую ​​как S3 или HDFS. Если вы собираетесь обрабатывать результаты с помощью Spark, то паркет - хороший формат для сохранения фреймов данных. В приведенном ниже фрагменте показано, как сохранить фрейм данных в DBFS и S3 как паркет.

  # DBFS (Паркет) 
df.write.save ('/ FileStore / parquet / game_stats', format = 'parquet') # S3 (Паркет)
df.write.parquet ("s3a: // my_bucket / game_stats", mode = "overwrite")

При сохранении фрейма данных в формате паркета он часто разбивается на несколько файлов, как показано на изображении ниже.

Файлы паркета, созданные при сохранении фрейма данных в DBFS.

Если вам нужны результаты в файле CSV, потребуется немного другой шаг вывода. Одно из основных отличий этого подхода заключается в том, что все данные будут отправлены в один узел перед выводом в CSV. Этот подход рекомендуется, когда вам нужно сохранить небольшой фрейм данных и обработать его в системе за пределами Spark.В приведенном ниже фрагменте показано, как сохранить фрейм данных в виде отдельного файла CSV в DBFS и S3.

  # DBFS (CSV) 
df.write.save ('/ FileStore / parquet / game_stats.csv', format = 'csv') # S3 (CSV)
df.coalesce (1) .write. format ("com.databricks.spark.csv")
.option ("header", "true") .save ("s3a: //my_bucket/game_sstats.csv")

Другой распространенный вывод для сценариев Spark - это NoSQL база данных, такая как Cassandra, DynamoDB или Couchbase. Это выходит за рамки данной статьи, но один подход, который я видел в прошлом, - это запись фрейма данных в S3, а затем запуск процесса загрузки, который сообщает системе NoSQL загрузить данные по указанному пути на S3.

Я также пропустил запись в источник потокового вывода, например Kafka или Kinesis. Эти системы удобнее использовать при использовании Spark Streaming.

Преобразование данных

С фреймами данных Spark можно выполнять множество различных типов операций, во многом схожих с широким спектром операций, которые можно применить к фреймам данных Pandas. Один из способов выполнения операций с фреймами данных Spark - через Spark SQL, который позволяет запрашивать фреймы данных, как если бы они были таблицами.В приведенном ниже фрагменте показано, как найти лучших игроков в наборе данных.

 df.createOrReplaceTempView ("статистика") display (spark.sql ("" "
выберите player_id, sum (1) как игры, сумму (цели) как голы)
из статистики
сгруппируйте по 1
по убыванию по 3 пределу
5
"" "))

Результатом является список идентификаторов игроков, количество появлений в играх и общее количество голов, забитых в этих играх. Если мы хотим отображать имена игроков, нам нужно будет загрузить дополнительный файл, сделать его доступным как временное представление, а затем присоединиться к нему с помощью Spark SQL.

Игроки, набравшие наибольшее количество очков в наборе данных.

В приведенном выше фрагменте я использовал команду display для вывода образца набора данных, но также можно назначить результаты другому фрейму данных, который можно использовать на более поздних этапах конвейера. В приведенном ниже коде показано, как выполнить эти шаги, где первые результаты запроса назначаются новому фрейму данных, который затем назначается временному представлению и объединяется с коллекцией имен игроков.

 top_players = spark.sql ("" "
выберите player_id, sum (1) как игры, сумму (цели) как голы
из статистики
сгруппируйте по 1,
по порядку по 3 desc
limit 5
" "") top_players.createOrReplaceTempView ("top_players")
names.createOrReplaceTempView ("names") display (spark.sql ("" "
выберите p.player_id, goal, _c1 как First, _c2 как Last
from top_players p
присоединяются имена n
на p .player_id = n._c0
порядок 2 desc
"" "))

Результат этого процесса, показанный ниже, определяет Алекса Овечкина как самого результативного игрока в НХЛ на основе набора данных Kaggle.

Выходные данные процесса объединения фреймов данных с помощью Spark SQL.

Существуют операции фрейма данных Spark для общих задач, таких как добавление новых столбцов, удаление столбцов, выполнение объединений, а также вычисление совокупной и аналитической статистики, но при начале работы может быть проще выполнить эти операции с помощью Spark SQL.Кроме того, легче переносить код с Python на PySpark, если вы уже используете такие библиотеки, как PandaSQL или framequery, для управления фреймами данных Pandas с помощью SQL.

Как и большинство операций с фреймами данных Spark, операции Spark SQL выполняются в режиме отложенного выполнения, что означает, что шаги SQL не будут оцениваться до тех пор, пока не потребуется результат. Spark SQL предоставляет отличный способ покопаться в PySpark без предварительного изучения новой библиотеки для фреймов данных.

Если вы используете Databricks, вы также можете создавать визуализации прямо в записной книжке, без явного использования библиотек визуализации.Например, мы можем построить среднее количество голов за игру, используя приведенный ниже код Spark SQL.

 display (spark.sql ("" "
select cast (substring (game_id, 1, 4) || '-'
|| substring (game_id, 5, 2) || '-01' as Date) как месяц)
, сумма (голов) / количество (отдельный game_id) как goal_per_goal
из статистики
group by 1
order by 1
"" "))

Первоначальный результат, отображаемый в записной книжке Databricks, представляет собой таблицу результатов, но мы можем используйте функцию построения графика для преобразования вывода в различные визуализации, такие как гистограмма, показанная ниже.Этот подход не поддерживает все визуализации, которые могут понадобиться специалисту по данным, но он значительно упрощает выполнение исследовательского анализа данных в Spark. При необходимости мы можем использовать функцию toPandas () для создания фрейма данных Pandas на узле драйвера, что означает, что любая библиотека построения графиков Python может использоваться для визуализации результатов. Однако этот подход следует использовать только для небольших фреймов данных, поскольку все данные быстро загружаются в память узла драйвера.

Среднее количество голов за игру в феврале и марте.

Я также посмотрел на среднее количество голов за бросок для игроков, забивших минимум 5 голов.

 display (spark.sql ("" "
выберите cast (голы / выстрелы * 50 как int) /50.0 как Goals_per_shot
, sum (1) как Players
из (
select player_id, sum (выстрелы) как выстрелы, сумма) (голы) как голы
из статистики
сгруппируйте по 1
, имея голы> = 5
)
сгруппируйте по 1,
по порядку 1
"" "))

Результаты этого преобразования показаны на диаграмме ниже. Большинство игроков, забивших хотя бы 5 голов, бьют от 4% до 12% времени.

голов за выстрел для игроков в наборе данных Kaggle.

MLlib

Один из распространенных вариантов использования Python для специалистов по обработке данных - построение прогнозных моделей. Хотя scikit-learn отлично подходит для работы с пандами, он не масштабируется для больших наборов данных в распределенной среде (хотя есть способы распараллелить его со Spark). При построении прогнозных моделей с помощью PySpark и массивных наборов данных предпочтительной библиотекой является MLlib, поскольку она изначально работает с фреймами данных Spark.Не все алгоритмы из scikit-learn доступны в MLlib, но существует множество вариантов, охватывающих многие варианты использования.

Чтобы использовать один из контролируемых алгоритмов в MLib, вам необходимо настроить фрейм данных с вектором функций и меткой в ​​виде скаляра. После подготовки вы можете использовать функцию fit для обучения модели. В приведенном ниже фрагменте показано, как объединить несколько столбцов в фрейме данных в один вектор функций с помощью VectorAssembler .Мы используем полученный фрейм данных для вызова функции fit и затем генерируем сводную статистику для модели.

  # MLlib импортирует 
из pyspark.ml.feature import VectorAssembler
из pyspark.ml.regression import LinearRegression # Создайте векторное представление для функций
Assembler = VectorAssembler (inputCols = ['shots', 'hits', 'помогает',
'штрафных минут', 'timeOnIce', 'takeaways'], outputCol = "features")
train_df = ассемблер.transform (df) # Подходит для модели линейной регрессии
lr = LinearRegression (featuresCol = 'features', labelCol = 'goal')
lr_model = lr.fit (train_df) # Статистика вывода
trainingSummary = lr_model.summary
print ("Coefficients:" + str (lr_model.coefficients))
print ("RMSE:% f"% trainingSummary.rootMeanSquaredError)
print ("R2:% f"% trainingSummary.r2)

Модель предсказывает, сколько целей игрок будет забивать в зависимости от количества бросков, времени в игре и других факторов.Однако производительность этой модели оставляет желать лучшего, она приводит к среднеквадратичной ошибке (RMSE) 0,375 и значению R-квадрата 0,125. Коэффициент с наибольшим значением был у столбца снимков , но он не дал достаточно сигнала для точности модели.

При построении конвейера машинного обучения с PySpark необходимо учитывать ряд дополнительных шагов, включая наборы данных для обучения и тестирования, настройку гиперпараметров и хранение моделей. Приведенный выше фрагмент - это просто отправная точка для начала работы с MLlib.

Pandas UDFs

Одной из функций Spark, которую я использовал совсем недавно, являются пользовательские функции Pandas (UDF), которые позволяют выполнять распределенные вычисления с фреймами данных Pandas в среде Spark. Общий способ работы этих UDF заключается в том, что вы сначала разделяете фрейм данных Spark с помощью оператора groupby , и каждый раздел отправляется на рабочий узел и транслируется в фрейм данных Pandas, который передается в UDF. Затем UDF возвращает преобразованный фрейм данных Pandas, который объединяется со всеми другими разделами, а затем преобразуется обратно в фрейм данных Spark.Конечный результат действительно полезен: вы можете использовать библиотеки Python, которые требуют Pandas, но теперь могут масштабироваться до массивных наборов данных, если у вас есть хороший способ разбить фрейм данных. Пользовательские функции Pandas были представлены в Spark 2.3, и я расскажу о том, как мы используем эту функциональность в Zynga во время Spark Summit 2019.

Подгонка кривой

- это обычная задача, которую я выполняю как специалист по данным. В приведенном ниже фрагменте кода показано, как выполнить подгонку кривой для описания взаимосвязи между количеством выстрелов и попаданий, которые игрок записывает в течение игры.Во фрагменте показано, как мы можем выполнить эту задачу для одного игрока, вызвав toPandas () для набора данных, отфильтрованного для одного игрока. Результатом этого шага являются два параметра (коэффициенты линейной регрессии), которые пытаются описать взаимосвязь между этими переменными.

  # Пример данных для игрока 
sample_pd = spark.sql ("" "
выберите * из статистики
, где player_id = 8471214
" "") .toPandas () # Импортировать библиотеки python
из scipy.optimize import leastsq
import numpy as np # Определить функцию для соответствия
def fit (params, x, y):
return (y - (params [0] + x * params [1])) # Подогнать кривой и покажите результаты
result = leastsq (fit, [1, 0],
args = (sample_pd.shots, sample_pd.hits))
print (result)

Если мы хотим рассчитать эту кривую для каждого игрока и имеют большой набор данных, то вызов toPandas () завершится ошибкой из-за исключения нехватки памяти. Мы можем масштабировать эту операцию для всего набора данных, вызвав groupby () на player_id , а затем применив Pandas UDF, показанный ниже.Функция принимает в качестве входных данных фрейм данных Pandas, который описывает статистику игрового процесса для одного игрока, и возвращает сводный фрейм данных, который включает player_id и подогнанные коэффициенты. Каждый из сводных фреймов данных Pandas затем объединяется в фрейм данных Spark, который отображается в конце фрагмента кода. Еще одна часть настройки для использования UDF Pandas - это определение схемы для результирующего фрейма данных, где схема описывает формат фрейма данных Spark, созданного на этапе применения.

  # Загрузить необходимые библиотеки 
из pyspark.sql.functions import pandas_udf, PandasUDFType
из pyspark.sql.types import *
import pandas as pd # Создать схему для итогового фрейма данных
schema = StructType ([ StructField ('ID', LongType (), True),
StructField ('p0', DoubleType (), True),
StructField ('p1', DoubleType (), True)]) # Определите UDF, ввод и выходными данными являются Pandas DFs
@pandas_udf (schema, PandasUDFType.GROUPED_MAP)
def analysis_player (sample_pd): # вернуть пустые параметры в недостаточно данных
if (len (sample_pd.shots) <= 1):
return pd.DataFrame ({'ID': [sample_pd.player_id [0 ]],
'p0': [0], 'p1': [0]})

# Выполнить аппроксимацию кривой
result = leastsq (fit, [1, 0], args = (sample_pd.shots,
sample_pd .hits))

# Вернуть параметры как Pandas DF
return pd.DataFrame ({'ID': [sample_pd.player_id [0]],
'p0': [result [0] [0]], 'p1': [result [0] [1]]}) # выполнить UDF и показать результаты
player_df = df.groupby ('player_id'). apply (analysis_player)
display (player_df)

Результат этого процесса показан ниже. Теперь у нас есть фрейм данных, который суммирует аппроксимацию кривой для каждого игрока, и мы можем выполнять эту операцию с огромным набором данных. При работе с огромными наборами данных важно выбрать или сгенерировать ключ раздела, чтобы добиться хорошего компромисса между количеством и размером разделов данных.

Вывод из Pandas UDF, показывающий соответствие кривой для каждого игрока.

Best Practices

Я рассмотрел некоторые типичные задачи использования PySpark, но также хотел дать несколько советов по упрощению перехода от Python к PySpark.Вот некоторые из лучших практик, которые я собрал на основе моего опыта переноса нескольких проектов между этими средами:

  • Избегайте словарей, используйте фреймы данных: с использованием типов данных Python, таких как словари, означает, что код может быть невыполнимым в распределенный режим. Вместо использования ключей для индексации значений в словаре рассмотрите возможность добавления еще одного столбца в фрейм данных, который можно использовать в качестве фильтра.
  • Используйте toPandas экономно: Вызов toPandas () приведет к загрузке всех данных в память на узле драйвера и предотвратит выполнение операций в распределенном режиме.Эту функцию можно использовать, когда данные уже были агрегированы, и вы хотите использовать знакомые инструменты построения графиков Python, но ее не следует использовать для больших фреймов данных.
  • Избегайте циклов for: Если возможно, желательно переписать логику цикла for, используя шаблон groupby-apply для поддержки параллельного выполнения кода. Я заметил, что использование этого шаблона в Python также привело к очистке кода, который легче перевести в PySpark.
  • Попытайтесь свести к минимуму активные операции: Чтобы ваш конвейер был как можно более масштабируемым, рекомендуется избегать активных операций, которые загружают полные фреймы данных в память.Я заметил, что чтение в CSV - это активная операция, и моя работа заключается в том, чтобы сохранить фрейм данных как паркет, а затем перезагрузить его из паркета для создания более масштабируемых конвейеров.
  • Используйте framequery / pandasql, чтобы упростить перенос: Если вы работаете с чужим кодом Python, может быть сложно понять, чего достигают некоторые операции Pandas. Если вы планируете переносить свой код с Python на PySpark, то использование библиотеки SQL для Pandas может упростить этот перевод.

Я обнаружил, что время, потраченное на написание кода в PySpark, также улучшилось благодаря навыкам программирования на Python.

Заключение

PySpark - отличный язык для изучения специалистами по данным, поскольку он обеспечивает масштабируемый анализ и конвейеры машинного обучения. Если вы уже знакомы с Python и Pandas, то большую часть ваших знаний можно применить к Spark. Я показал, как выполнять некоторые стандартные операции с PySpark для ускорения процесса обучения. Я также продемонстрировал некоторые недавние функции Spark с UDF Pandas, которые позволяют выполнять код Python в распределенном режиме.Существуют отличные среды, которые позволяют легко приступить к работе с кластером Spark, поэтому сейчас отличное время для изучения PySpark!

.

java - Добавление jar-файлов в задание Spark - spark-submit

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Как добавить пользовательское описание в задание Spark для отображения в Spark Web UI

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

Смотрите также

НАС УЖЕ 77 321

Подпишись на обновления сайта! Получай статьи на почту: