Топ-13 библиотек Scala для анализа данных |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-07-09 10:33 Последнее время язык Scala стал обширно применяться специалистами Data Science. Он приобрел популярность в основном благодаря появлению Spark, который написан на Scala. На практике, часто на этапе исследования анализ и создание модели выполняются в Python, а затем реализуются в Scala, поскольку этот язык больше подходит для production. Мы подготовили подробный обзор наиболее интересных библиотек, используемых для реализации задач машинного обучения и data science в Scala. Часть из них используется в нашей образовательной программе "Анализ данных на Scala". Для удобства все представленные в рейтинге библиотеки были разделены на 5 групп: анализ данных и математика, NLP, визуализация, машинное обучение и прочее. Анализ данных и математика
№1. Breeze (Коммиты: 3316, Контрибьютеры: 84)
Библиотека Breeze известна как основная научная библиотека для Scala. В ней есть похожие вещи из MATLAB (с точки зрения структур данных), а из Python – классы NumPy. Breeze обеспечивает быстрые и эффективные манипуляции с массивами данных и позволяет выполнять многие другие операции, включая следующие:
Стоит отметить, что Breeze также позволяет строить графики, но об этом поговорим позже. №2. Saddle (Коммиты: 184, Контрибьютеры: 10)
Другой инструмент для работы с данными для Scala – Saddle. Это аналог Pandas в Python, но только для Scala. Как и датафреймы в Pandas или R, Saddle основана на структуре фрэймов (двумерная индексированная матрица). Всего существует пять основных структур данных, а именно:
Frame (2D индексированная матрица)
Классы Vec и Mat расположены в Series и Frame. Вы можете осуществлять различные манипуляции с этими структурами данных и использовать их для базового анализа данных. Еще одна замечательная особенность Saddle – его устойчивость к пропускам в данных. №3. ScalaLab (Коммиты: 23, Контрибьютеры: 1)
ScalaLab – это своего рода MATLAB в Scala. Более того, ScalaLab может напрямую вызывать и получать доступ к результатам скриптов MATLAB. Основное отличие от предыдущих вычислительных библиотек состоит в том, что ScalaLab использует свой собственный предметно-ориентированный язык, называемый ScalaSci. Scalalab удобен тем, что получает доступ к множеству научных библиотек Java и Scala, поэтому можно легко импортировать свои данные и затем использовать различные методы для выполнения манипуляций и вычислений. Большинство вещей похожи на Breeze и Saddle. Более того, как и в Breeze, существуют возможности построения графиков, которые позволяют дополнительно интерпретировать полученные данные. NLP
№4. Epic (Коммиты: 1790, Контрибьютеры: 15) и Puck (Коммиты: 536, Контрибьютеры: 1)
Scala имеет несколько хороших библиотек обработки естественного языка в составе ScalaNLP, включая Epic и Puck. Эти библиотеки в основном используются в качестве инструментов анализа текстов. При этом Puck более удобен, если необходимо анализировать тысячи предложений из-за его высокой скорости и использования графического процессора. Кроме того, Epic известен как фреймворк прогнозирования, который использует структурированное прогнозирование для построения сложных систем. Визуализация
№5. Breeze-viz (Коммиты: 29, Контрибьютеры: 3)
Как следует из названия, Breeze-viz – это библиотека для визуализации, разработанная Breeze для Scala. Он основан на известной библиотеке Java JFreeChart и создание графиков чем-то похоже на MATLAB. Хотя Breeze-viz имеет гораздо меньше возможностей, чем MATLAB, matplotlib в Python или R, тем не менее полезна при создании моделей и анализе данных. №6. Vegas (Коммиты: 210, Контрибьютеры: 14)
Еще одна библиотека Scala для визуализации данных – это Vegas. Она гораздо более функциональная, чем Breeze-viz, и позволяет делать некоторые преобразования, полезные для графиков: фильтрацию, трансформации и агрегации. В целом, библиотека похожа на Bokeh и Plotly в Python. Vegas позволяет писать код в декларативном стиле, что дает возможность сосредоточиться главным образом на определении того, что необходимо сделать с данными, и проведении дальнейшего анализа визуализаций, не беспокоясь об имплементации кода. Машинное обучение
№7. Smile (Коммиты: 1019, Контрибьютеры: 21)
Statistical Machine Intelligence and Learning Engine или же просто Smile – является многообещающей современной библиотекой машинного обучения, в чем-то похожей на scikit-learn в Python. Он разработан на Java, но у него также есть API для Scala. Библиотека достаточно быстрая и производительная: эффективное использование памяти, большой набор алгоритмов машинного обучения для классификации, регрессии, NNS, выбора функций и т. д. №8. Spark ML
Библиотека машинного обучения, которая работает из коробки в Apache Spark. Сам Spark написан на Scala и имеет соответствующее API для всех своих библиотек. Spark ML – в отличие от Spark MLlib (более старой библиотеки), работает с датафрэймами. Также она дает возможность строить пайплайны различных преобразований на ваших данных. Это может рассматриваться как последовательность этапов, где каждый этап представляет собой либо Transformer, который преобразует один датафрейм в другой, либо Estimator, например, алгоритм машинного обучения, который обучается на датафрейме. №9. DeepLearning.scala (Коммиты: 1647, Контрибьютеры: 14)
DeepLearning.scala – это альтернативный инструмент машинного обучения, который позволяет строить модели deep learning. Библиотека использует математические формулы для создания сложных динамических нейронных сетей посредством комбинации объектно-ориентированного и функционального программирования. Она использует широкий спектр типов, а также классы аппликативных типов. Последнее позволяет начинать несколько вычислений одновременно, что повышает производительность. №10. Summing Bird (Коммиты: 1772, Контрибьютеры: 31)
Summingbird – это фреймворк обработки данных, который позволяет использовать batch и real-time MapReduce-вычисления. Основным катализатором для разработки языка стали разработчики Twitter, которые часто занимались написанием одного и того же кода дважды: сначала для батчевой обработки, затем еще раз для стриминга. Summingbird использует и генерирует два типа данных: потоки (бесконечные последовательности кортежей) и снэпшоты, которые в определенный момент времени считаются полным состоянием набора данных. Наконец, Summingbird предоставляет платформу для Storm, Scalding и движок для вычислений в памяти для целей тестирования. №11. PredictionIO (Коммиты: 4343, Контрибьютеры: 125)
Стоит также упомянуть сервис машинного обучения для создания и развертывания прогностических механизмов, называемых PredictionIO. Он построен на Apache Spark MLlib и HBase и даже был оценен на Github как самый популярный продукт машинного обучения на основе Apache Spark. Он позволяет вам легко и эффективно создавать, оценивать и развертывать сервисы, реализовывать свои собственные модели машинного обучения и включать их в свой сервис. Прочее
№12. Akka (Коммиты: 21430, Контрибьютеры: 467)
Akka, разработанная компанией-разработчиком Scala, представляет собой параллельную среду для построения распределенных приложений на JVM. Она использует модель на основе акторов (actor), где актор представляет собой объект, который получает сообщения и выполняет соответствующие действия. Основным отличием является дополнительный уровень между акторами и фреймворком, который требует только, чтобы акторы обрабатывали сообщения, в то время как фреймворк берет на себя обработку всего остального. Все акторы иерархически организованы, это помогает акторам более эффективно взаимодействовать друг с другом и решать сложные проблемы, разделяя их на более мелкие задачи. №13. Slick (Коммиты: 1940, Контрибьютеры: 92)
Последняя библиотека – Slick, что означает Scala Language-Integrated Connection Kit. Это библиотека для создания и выполнения запросов к базам данных: H2, MySQL, PostgreSQL и т. д. Некоторые базы данных доступны через расширения slick-extensions. Для построения запросов Slick предоставляет мощный DSL, который делает код таким, как если бы вы использовали коллекции Scala. Slick поддерживает как простые запросы SQL, так и строго типизированные джойны нескольких таблиц. Кроме того, простые подзапросы могут использоваться для создания более сложных. Заключение
В этой статье мы выделили и кратко описали некоторые библиотеки Scala, которые могут быть очень полезны при выполнении основных задач по обработке данных. Если у вас есть опыт работы с любыми другими полезными библиотеками или платформами Scala, которые стоит добавить в этот список, пожалуйста, не стесняйтесь делиться ими в комментариях. Источник: habr.com Комментарии: |
|