diff --git a/MENU.json b/MENU.json index d13c5ef..cd95db9 100644 --- a/MENU.json +++ b/MENU.json @@ -5,6 +5,7 @@ "android-overview", "js-overview", "native-overview", + "data-science-overview", "competitive-programming" ], "Введение": [ diff --git a/data-science-overview.md b/data-science-overview.md new file mode 100644 index 0000000..726e0dc --- /dev/null +++ b/data-science-overview.md @@ -0,0 +1,234 @@ +--- +type: doc +layout: reference +title: "Kotlin для Data Science" +url: https://kotlinlang.ru/docs/data-science-overview.html +--- + + + + +# Kotlin для Data Science + + +Начиная с построения конвейеров данных и заканчивая разработкой моделей машинного обучения, Kotlin может стать отличным +выбором для работы с данными: + + + +* Kotlin лаконичен, удобочитаем и прост в освоении; +* Статическая типизация и null-безопасность помогают создавать надежный код, который легко поддерживать и улучшать; +* Будучи JVM языком, Kotlin обеспечивает отличную производительность и возможность использовать целую экосистему +проверенных и надежных Java библиотек. + + + + +## Интерактивные редакторы + + +Блокноты, такие как [Jupyter Notebook](https://jupyter.org/) и [Apache Zeppelin](https://zeppelin.apache.org/), +предоставляют удобные инструменты для визуализации данных и исследовательских исследований. Kotlin интегрируется с этими +инструментами, чтобы помочь вам изучать данные, делиться своими выводами с коллегами или развивать свои навыки в области +Data Science и машинного обучения. + + + + +### Kotlin ядро для Jupyter + + +Jupyter Notebook - это веб-приложение с открытым исходным кодом, которое позволяет создавать и обмениваться документами +(также известными как "ноутбуки"), которые могут содержать код, визуализации и Markdown разметку. +[Kotlin-jupyter](https://github.com/Kotlin/kotlin-jupyter) - это проект с открытым исходным кодом, который обеспечивает +поддержку Kotlin для Jupyter Notebook. + +Kotlin в Jupyter-ноутбуке + + +Ознакомьтесь с [GitHub репозиторием](https://github.com/Kotlin/kotlin-jupyter) ядра Kotlin для получения инструкций по +установке, документации и примеров. + + + + +### Kotlin интерпретатор для Zeppelin + + +Apache Zeppelin - популярное веб-решение для интерактивного анализа данных. Оно обеспечивает мощную поддержку кластерной +вычислительной системы Apache Spark, которая особенно полезна для дата-инжиниринга. Начиная с [версии 0.9.0](https://zeppelin.apache.org/docs/0.9.0-preview1/), +в Apache Zeppelin есть встроенный Kotlin интерпретатор. + +Kotlin в Zeppelin-ноутбуке + + + + +## Библиотеки + + +Экосистема библиотек для задач, связанных с данными, созданная сообществом Kotlin, быстро расширяется. Вот некоторые +библиотеки, которые могут быть полезными: + + + + +### Kotlin библиотеки + + + +* [Multik](https://github.com/Kotlin/multik): многомерные массивы в Kotlin. Библиотека предоставляет +Kotlin-идиоматический, типо- и размерно-безопасный API для математических операций над многомерными массивами. Multik +предлагает JVM с возможностью замены и собственные вычислительные движки, а также их комбинацию для оптимальной +производительности; + +* [KotlinDL](https://github.com/jetbrains/kotlindl) - это высокоуровневый API глубокого обучения, написанный на Kotlin +и вдохновленный Keras. Он предлагает простые API для обучения моделей глубокого обучения с нуля, импорта существующих +моделей Keras для вывода и использования обучения передаче для настройки существующих предварительно обученных моделей +для ваших задач; + +* [Kotlin для Apache Spark](https://github.com/JetBrains/kotlin-spark-api) увеличивает уровень совместимости между +Kotlin и Apache Spark. Это позволяет разработчикам Kotlin использовать знакомые особенности языка, такие как классы +данных и лямбда-выражения, в виде простых выражений в фигурных скобках или ссылок на методы; + +* [kotlin-statistics](https://github.com/thomasnield/kotlin-statistics) - это библиотека, которая предоставляет функции-расширения для исследовательской и производственной статистики. Она поддерживает основные функции для обработки числовых списков, последовательностей, массивов (от `sum` до `skewness`), операциями группировки (ориг.: *slicing operators*) (такие как `countBy`, `simpleRegressionBy`), операции группировки, выборки дискретной плотности вероятности, наивный байесовский классификатор, кластеризацию, линейную регрессию и многое другое; + +* [kmath](https://github.com/mipt-npm/kmath) - это библиотека, вдохновленная [NumPy](https://numpy.org/). Эта библиотека +поддерживает алгебраические структуры и операции, структуры, подобные массивам, математические выражения, гистограммы, +потоковые операции, обертку вокруг [commons-math](https://commons.apache.org/proper/commons-math/) и [koma](https://github.com/kyonifer/koma) +и многое другое; + +* [krangl](https://github.com/holgerbrandl/krangl) - это библиотека, вдохновленная [dplyr](https://dplyr.tidyverse.org/) +в R и [pandas](https://pandas.pydata.org/) из Python. Эта библиотека предоставляет инструментарий для обработки данных с +использованием API функционального стиля; она также включает функции фильтрации, преобразования, агрегирования и +изменения формы табличных данных; + +* [lets-plot](https://github.com/JetBrains/lets-plot) - это библиотека построения графиков для статистических данных. +Она мультиплатформенная и может использоваться не только с JVM, но также с JS и Python; + +* [kravis](https://github.com/holgerbrandl/kravis) - это еще одна библиотека для визуализации табличных данных, +вдохновленная [ggplot](https://ggplot2.tidyverse.org/) в R; + +* [londogard-nlp-toolkit](https://github.com/londogard/londogard-nlp-toolkit/) - это библиотека, которая предоставляет инструменты для обработки естественных языков, например для работы со словами/частями слов/предложениями, частоты использования слов, стоп-слов, поиском основы слова и многим другим. + + + + +### Java библиотеки + +Since Kotlin provides first-class interop with Java, you can also use Java libraries for data science in your Kotlin code. +Here are some examples of such libraries: +Поскольку Kotlin полностью совместим с Java, вы также можете использовать Java-библиотеки для Data Science в своем +Kotlin-коде. Вот несколько примеров таких библиотек: + + + +* [DeepLearning4J](https://deeplearning4j.org/) - библиотека глубокого обучения для Java; + +* [ND4J](https://github.com/deeplearning4j/nd4j) - эффективная матричная математическая библиотека для JVM; + +* [Dex](https://github.com/PatMartin/Dex) - инструмент на основе Java для визуализации данных; + +* [Smile](https://github.com/haifengl/smile) - комплексная система машинного обучения, обработки естественного языка, +линейной алгебры, графики, интерполяции и визуализации. Помимо Java API, Smile также предоставляет функциональный +[Kotlin API](https://haifengl.github.io/api/kotlin/smile-kotlin/index.html), а также Scala и Clojure API.; + * [Smile-NLP-kt](https://github.com/londogard/smile-nlp-kt) - переписанные на Kotlin Scala имплициты для части Smile, отвечающей за обработку естественного языка, в виде функций-расширений и интерфейсов; + +* [Apache Commons Math](https://commons.apache.org/proper/commons-math/) - библиотека общей математики, статистики и +машинного обучения для Java; + +* [NM Dev](https://nm.dev/) - математическая библиотека Java, охватывающая всю классическую математику; + +* [OptaPlanner](https://www.optaplanner.org/) - инструмент поиска решения для проблем оптимизации планирования; + +* [Charts](https://github.com/HanSolo/charts) - библиотека JavaFX для научных графиков (в разработке); + +* [CoreNLP](https://stanfordnlp.github.io/CoreNLP/) - инструментарий для обработки естественного языка; + +* [Apache Mahout](https://mahout.apache.org/) - распределённая программная среда для регрессии, кластеризации и рекомендаций; + +* [Weka](https://www.cs.waikato.ac.nz/ml/index.html) - набор алгоритмов машинного обучения для решения задач сбора данных; + +* [Tablesaw](https://github.com/jtablesaw/tablesaw) - Java датафрейм (инструменты для загрузки, преобразования, +фильтрации и суммирования данных), включающий в себя основанную на Plot.ly библиотеку +для визуализации данных. + + +Если в этом списке нет того, что вам нужно, вы можете найти дополнительные варианты в GitHub репозитории +**[Kotlin Machine Learning Demos](https://github.com/thomasnield/kotlin-machine-learning-demos)** с демонстрационными +материалами от Томаса Нилда.