Préparer Kotlin pour la science des données

Publié le par Delphine Massenhove

Cette année lors de la KotlinConf 2019, Roman Belov a livré un aperçu de l’approche de Kotlin concernant la science des données. Sa présentation “Using Kotlin for data science” est maintenant accessible et dans cet article nous en restituons les points essentiels et partageons plus d’informations sur l’état actuel des outils et bibliothèques Kotlin pour la science des données.

Quelle est la place de Kotlin dans la science des données ? Face à la nécessité d’analyser de grandes quantités de données, la discipline de la science des données a connu une véritable renaissance au cours des dernières années. Cette renaissance ne serait pas possible sans les outils appropriés. Auparavant, vous aviez besoin d’un langage de programmation spécialement conçu pour la science des données, mais aujourd’hui il est possible d’utiliser des langages à usage général. Bien sûr, cela suppose que ces langages à usage général aient bénéficié de bonnes décisions au moment de leur conception, sans parler de la participation de la communauté. Cela explique que certains de ces langages, comme Python par exemple, soient plus plébiscités que d’autres pour la science des données.

Avec le concept de Kotlin Multiplatform, Kotlin vise à reproduire son expérience auprès des développeurs et à étendre son interopérabilité à d’autres plateformes. Les principales qualités de Kotlin, de par sa conception, sont la concision, la sécurité et l’interopérabilité. Ces caractéristiques fondamentales en font un excellent outil pour une grande variété de tâches et de plateformes. La science des données compte au nombre de ces tâches.

La bonne nouvelle est que la communauté a déjà commencé à adopter Kotlin pour la science des données et que cette adoption s’opère à un rythme soutenu. Le rapport ci-dessous montre le degré de préparation de Kotlin pour la science des données, avec notamment les bibliothèques et outils Kotlin pour la science des données.

Jupyter

D’abord et avant tout, grâce à leur interactivité, les notebooks Jupyter sont très pratiques pour transformer, visualiser et présenter des données. Avec son extensibilité et sa nature open source, Jupyter s’est transformé en un vaste écosystème autour de la science des données et a été intégré à quantité d’autres solutions liées aux données. Parmi celles-ci, le noyau Kotlin pour les notebooks Jupyter. Avec ce noyau, vous pouvez écrire et exécuter du code Kotlin dans les notebooks Jupyter et utiliser des frameworks de science des données tiers écrits en Java et en Kotlin.

Vous trouverez un exemple reproductible de notebook Jupyter en Kotlin dans ce référentiel. Pour pouvoir utiliser rapidement un notebook Kotlin, vous pouvez le lancer sur Binder (veuillez noter que l’environnement prendra normalement une minute à configurer).

Apache Zeppelin

Grâce à sa solide prise en charge de Spark et Scala, Apache Zeppelin est très populaire parmi les ingénieurs de données. Comme Jupyter, Zeppelin possède une API de plugin (appelée Interpréteurs) qui permet d’étendre son noyau afin de prendre en charge d’autres outils et langages. Actuellement, la dernière version de Zeppelin (0.8.2) ne contient pas d’interpréteur Kotlin intégré. Mais quoi qu’il en soit, ce dernier est disponible dans la branche master de Zeppelin. Pour découvrir comment déployer Zeppelin avec la prise en charge de Kotlin dans un cluster Spark, consultez ces instructions.

Apache Spark

Comme Spark possède une API Java robuste, vous pouvez déjà utiliser Kotlin pour travailler avec l’API Spark Java de Jupyter et Zeppelin sans aucun problème. Nous travaillons toutefois à améliorer cette intégration avec la prise en charge complète des classes Kotlin à l’aide de l’API Dataset de Spark. La prise en charge de Kotlin avec le shell Spark est également en cours.

Bibliothèques

L’utilisation de Kotlin seul pour la science de données, sans bibliothèques, n’a pas beaucoup de sens. Heureusement, grâce aux efforts récents de la communauté, il existe déjà un certain nombre de bibliothèques Kotlin que vous pouvez utiliser sans attendre.

Voici quelques-unes des bibliothèques les plus utiles :

  • kotlin-statistics est une bibliothèque qui fournit un ensemble de fonctions d’extension pour générer des statistiques d’exploration et de production. Elle prend notamment en charge les fonctions numériques basiques des séquences/tableaux/listes (de la somme à l’asymétrie), les opérateurs de découpage (par exemple countBy, simpleRegressionBy, etc.), les opérations de binning (groupement par classe), le classifieur naïf de Bayes, le clustering, la régression linéaire, etc.
  • kmath est une bibliothèque inspirée de numpy. Elle prend en charge les structures et opérations algébriques, les structures de type tableau, les expressions mathématiques, les histogrammes, les opérations de streaming, les wrappers autour de commons-math et koma, et plus encore.
  • krangl est une bibliothèque inspirée du dplyr de R et des pandas de Python ; elle fournit des fonctionnalités pour la manipulation de données à l’aide d’une API de style fonctionnel. Elle vous permet de filtrer, transformer, agréger et remodeler les données de vos tables.
  • lets-plot est une bibliothèque de création déclarative de tracés basés sur des données de tables. Cette bibliothèque s’inspire de ggplot en R et du livre The Grammar of Graphics. Elle est étroitement intégrée au noyau Kotlin. Elle est multiplateforme et peut être utilisée non seulement avec JVM, mais aussi JS et Python.
  • kravis est une autre bibliothèque inspirée par ggplot de R pour visualiser les données des tables.

Pour une liste plus complète de liens utiles, consultez Kotlin data science resources par Thomas Nield.

Lets-Plot for Kotlin

Lets-Plot est une bibliothèque de traçage open source pour les données statistiques, entièrement écrite en Kotlin. En tant que bibliothèque multiplateforme, elle possède une API conçue spécifiquement pour Kotlin. Vous pouvez vous familiariser avec l’utilisation de cette API en lisant son guide d’utilisation.

Pour l’interactivité, Lets-Plot est étroitement intégré au noyau Kotlin pour les notebooks Jupyter. Une fois le noyau Kotlin installé et activé, ajoutez la ligne suivante à un notebook Jupyter :

%use lets-plot

Vous pourrez ensuite appeler les fonctions de l’API Lets-Plot à partir de vos cellules et voir les résultats immédiatement sous les cellules comme vous le feriez normalement en utilisant ggplot avec R ou Python :

Kotlin bindings for NumPy

NumPy est un paquet populaire pour les calculs scientifiques avec Python. Il fournit de puissantes capacités pour le traitement de tableaux multidimensionnels, l’algèbre linéaire, la transformation de Fourier, les nombres aléatoires et d’autres tâches mathématiques. Kotlin Bindings for NumPy est une bibliothèque Kotlin qui permet d’appeler des fonctions NumPy à partir du code Kotlin en fournissant des wrappers typés de façon statique pour les fonctions NumPy.

Contribution

L’ensemble de l’écosystème Kotlin repose sur l’open source et n’existerait pas sans l’aide de ses nombreux contributeurs. Kotlin émerge tout juste dans le domaine de la science des données et a plus que jamais besoin de votre aide ! Voici comment vous pouvez participer :

  • Parlez des difficultés que vous rencontres et partagez vos suggestions pour encore mieux adapter Kotlin aux tâches de la science des données – vos tâches.
  • Contribuez aux bibliothèques open source associées à la science des données et créez vos propres bibliothèques et outils – toutes les initiative dont vous pensez qu’elle peuvent aider Kotlin à devenir un langage de référence pour la science des données sont bienvenues.

La communauté Kotlin dispose d’un un canal dédié #datascience sur son Slack. Nous vous invitons à rejoindre ce canal pour poser des questions, découvrir dans quels domaines une aide est nécessaire et comment vous pouvez contribuer, et bien sûr partager vos commentaires et votre travail avec la communauté.

Gardez à l’esprit que Kotlin en est encore au tout début de son parcours pour devenir l’outil de référence pour les scientifiques des données. C’est une aventure passionnante et pleine de défis qui commence ! Il nous faudra créer un riche écosystème d’outils et de bibliothèques et ajuster la conception du langage pour répondre aux besoins des tâches impliquant des données. Si vous constatez des problèmes, partagez votre expérience – ou impliquez-vous et aidez-nous à les corriger. Essayez les outils, en particulier le noyau Jupyter et les bibliothèques, et partagez vos réactions avec nous.

Ressources

En plus des informations fournies dans cet article, vous pouvez consulter le site web officiel de Kotlin.

KotlinConf 2019 a donné lieu à plusieurs interventions inspirantes sur la science des données, notamment Kotlin for Science par Alexander Nozik et Gradient Descent with Kotlin par Erik Meijer.

Nous vous recommandons également de regarder ces présentations des deux dernières KotlinConf : l’intervention de Holger Brandl (le créateur de krangl, qui est à Kotlin ce que les pandas sont à Python), et celle de Thomas Nield (le créateur de kotlin-statistics).

Voilà pour aujourd’hui. En résumé, la communauté adopte Kotlin pour la science des données à un bon rythme, alors maintenant, c’est à vous de jouer.

Faison évoluer Kotlin ensemble !

Auteur de l’article original en anglais : Andrey Cheptsov