{"id":34231,"date":"2020-02-17T18:09:33","date_gmt":"2020-02-17T17:09:33","guid":{"rendered":"https:\/\/blog.jetbrains.com\/fr\/?p=526"},"modified":"2020-02-17T18:09:33","modified_gmt":"2020-02-17T17:09:33","slug":"preparer-kotlin-pour-la-science-des-donnees","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/fr\/2020\/02\/17\/preparer-kotlin-pour-la-science-des-donnees\/","title":{"rendered":"Pr\u00e9parer Kotlin pour la science des donn\u00e9es"},"content":{"rendered":"Cette ann\u00e9e lors de la KotlinConf 2019, Roman Belov a livr\u00e9 un aper\u00e7u de l'approche de Kotlin concernant la science des donn\u00e9es. Sa pr\u00e9sentation \"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\u2019\u00e9tat actuel des outils et biblioth\u00e8ques Kotlin pour la science des donn\u00e9es.\r\n\r\n\r\n\r\nQuelle est la place de Kotlin dans la science des donn\u00e9es ? Face \u00e0 la n\u00e9cessit\u00e9 d'analyser de grandes quantit\u00e9s de donn\u00e9es, la discipline de la science des donn\u00e9es a connu une v\u00e9ritable renaissance au cours des derni\u00e8res ann\u00e9es. Cette renaissance ne serait pas possible sans les outils appropri\u00e9s. Auparavant, vous aviez besoin d'un langage de programmation sp\u00e9cialement con\u00e7u pour la science des donn\u00e9es, mais aujourd'hui il est possible d'utiliser des langages \u00e0 usage g\u00e9n\u00e9ral. Bien s\u00fbr, cela suppose que ces langages \u00e0 usage g\u00e9n\u00e9ral aient b\u00e9n\u00e9fici\u00e9 de bonnes d\u00e9cisions au moment de leur conception, sans parler de la participation de la communaut\u00e9. Cela explique que certains de ces langages, comme Python par exemple, soient plus pl\u00e9biscit\u00e9s que d'autres pour la science des donn\u00e9es.\r\n\r\nAvec le concept de Kotlin Multiplatform, Kotlin vise \u00e0 reproduire son exp\u00e9rience aupr\u00e8s des d\u00e9veloppeurs et \u00e0 \u00e9tendre son interop\u00e9rabilit\u00e9 \u00e0 d'autres plateformes. Les principales qualit\u00e9s de Kotlin, de par sa conception, sont la concision, la s\u00e9curit\u00e9 et l'interop\u00e9rabilit\u00e9. Ces caract\u00e9ristiques fondamentales en font un excellent outil pour une grande vari\u00e9t\u00e9 de t\u00e2ches et de plateformes. La science des donn\u00e9es compte au nombre de ces t\u00e2ches.\r\n\r\nLa bonne nouvelle est que la communaut\u00e9 a d\u00e9j\u00e0 commenc\u00e9 \u00e0 adopter Kotlin pour la science des donn\u00e9es et que cette adoption s\u2019op\u00e8re \u00e0 un rythme soutenu. Le rapport ci-dessous montre le degr\u00e9 de pr\u00e9paration de Kotlin pour la science des donn\u00e9es, avec notamment les biblioth\u00e8ques et outils Kotlin pour la science des donn\u00e9es.\r\nJupyter\r\nD'abord et avant tout, gr\u00e2ce \u00e0 leur interactivit\u00e9, les notebooks Jupyter sont tr\u00e8s pratiques pour transformer, visualiser et pr\u00e9senter des donn\u00e9es. Avec son extensibilit\u00e9 et sa nature open source, Jupyter s'est transform\u00e9 en un vaste \u00e9cosyst\u00e8me autour de la science des donn\u00e9es et a \u00e9t\u00e9 int\u00e9gr\u00e9 \u00e0 quantit\u00e9 d'autres solutions li\u00e9es aux donn\u00e9es. Parmi celles-ci, le noyau Kotlin pour les notebooks Jupyter. Avec ce noyau, vous pouvez \u00e9crire et ex\u00e9cuter du code Kotlin dans les notebooks Jupyter et utiliser des frameworks de science des donn\u00e9es tiers \u00e9crits en Java et en Kotlin.\r\n\r\nVous trouverez un exemple reproductible de notebook Jupyter en Kotlin dans ce r\u00e9f\u00e9rentiel. Pour pouvoir utiliser rapidement un notebook Kotlin, vous pouvez le lancer sur Binder (veuillez noter que l'environnement prendra normalement une minute \u00e0 configurer).\r\nApache Zeppelin\r\nGr\u00e2ce \u00e0 sa solide prise en charge de Spark et Scala, Apache Zeppelin est tr\u00e8s populaire parmi les ing\u00e9nieurs de donn\u00e9es. Comme Jupyter, Zeppelin poss\u00e8de une API de plugin (appel\u00e9e Interpr\u00e9teurs) qui permet d'\u00e9tendre son noyau afin de prendre en charge d'autres outils et langages. Actuellement, la derni\u00e8re version de Zeppelin (0.8.2) ne contient pas d'interpr\u00e9teur Kotlin int\u00e9gr\u00e9. Mais quoi qu'il en soit, ce dernier est disponible dans la branche master de Zeppelin. Pour d\u00e9couvrir comment d\u00e9ployer Zeppelin avec la prise en charge de Kotlin dans un cluster Spark, consultez ces instructions.\r\nApache Spark\r\nComme Spark poss\u00e8de une API Java robuste, vous pouvez d\u00e9j\u00e0 utiliser Kotlin pour travailler avec l'API Spark Java de Jupyter et Zeppelin sans aucun probl\u00e8me. Nous travaillons toutefois \u00e0 am\u00e9liorer cette int\u00e9gration avec la prise en charge compl\u00e8te des classes Kotlin \u00e0 l'aide de l'API Dataset de Spark. La prise en charge de Kotlin avec le shell Spark est \u00e9galement en cours.\r\nBiblioth\u00e8ques\r\nL'utilisation de Kotlin seul pour la science de donn\u00e9es, sans biblioth\u00e8ques, n'a pas beaucoup de sens. Heureusement, gr\u00e2ce aux efforts r\u00e9cents de la communaut\u00e9, il existe d\u00e9j\u00e0 un certain nombre de biblioth\u00e8ques Kotlin que vous pouvez utiliser sans attendre.\r\n\r\nVoici quelques-unes des biblioth\u00e8ques les plus utiles :\r\n\r\n\tkotlin-statistics est une biblioth\u00e8que qui fournit un ensemble de fonctions d'extension pour g\u00e9n\u00e9rer des statistiques d'exploration et de production. Elle prend notamment en charge les fonctions num\u00e9riques basiques des s\u00e9quences\/tableaux\/listes (de la somme \u00e0 l'asym\u00e9trie), les op\u00e9rateurs de d\u00e9coupage (par exemple countBy, simpleRegressionBy, etc.), les op\u00e9rations de binning (groupement par classe), le classifieur na\u00eff de Bayes, le clustering, la r\u00e9gression lin\u00e9aire, etc.\r\n\tkmath est une biblioth\u00e8que inspir\u00e9e de numpy. Elle prend en charge les structures et op\u00e9rations alg\u00e9briques, les structures de type tableau, les expressions math\u00e9matiques, les histogrammes, les op\u00e9rations de streaming, les wrappers autour de commons-math et koma, et plus encore.\r\n\tkrangl est une biblioth\u00e8que inspir\u00e9e du dplyr de R et des pandas de Python ; elle fournit des fonctionnalit\u00e9s pour la manipulation de donn\u00e9es \u00e0 l'aide d'une API de style fonctionnel. Elle vous permet de filtrer, transformer, agr\u00e9ger et remodeler les donn\u00e9es de vos tables.\r\n\tlets-plot est une biblioth\u00e8que de cr\u00e9ation d\u00e9clarative de trac\u00e9s bas\u00e9s sur des donn\u00e9es de tables. Cette biblioth\u00e8que s'inspire de ggplot en R et du livre The Grammar of Graphics. Elle est \u00e9troitement int\u00e9gr\u00e9e au noyau Kotlin. Elle est multiplateforme et peut \u00eatre utilis\u00e9e non seulement avec JVM, mais aussi JS et Python.\r\n\tkravis est une autre biblioth\u00e8que inspir\u00e9e par ggplot de R pour visualiser les donn\u00e9es des tables.\r\n\r\nPour une liste plus compl\u00e8te de liens utiles, consultez Kotlin data science resources par Thomas Nield.\r\n\r\nLets-Plot for Kotlin\r\n\r\nLets-Plot est une biblioth\u00e8que de tra\u00e7age open source pour les donn\u00e9es statistiques, enti\u00e8rement \u00e9crite en Kotlin. En tant que biblioth\u00e8que multiplateforme, elle poss\u00e8de une API con\u00e7ue sp\u00e9cifiquement pour Kotlin. Vous pouvez vous familiariser avec l'utilisation de cette API en lisant son guide d'utilisation.\r\n\r\nPour l'interactivit\u00e9, Lets-Plot est \u00e9troitement int\u00e9gr\u00e9 au noyau Kotlin pour les notebooks Jupyter. Une fois le noyau Kotlin install\u00e9 et activ\u00e9, ajoutez la ligne suivante \u00e0 un notebook Jupyter :\r\n\r\n%use lets-plot\r\n\r\nVous pourrez ensuite appeler les fonctions de l'API Lets-Plot \u00e0 partir de vos cellules et voir les r\u00e9sultats imm\u00e9diatement sous les cellules comme vous le feriez normalement en utilisant ggplot avec R ou Python :\r\n\r\n\r\n\r\nKotlin bindings for NumPy\r\n\r\nNumPy est un paquet populaire pour les calculs scientifiques avec Python. Il fournit de puissantes capacit\u00e9s pour le traitement de tableaux multidimensionnels, l'alg\u00e8bre lin\u00e9aire, la transformation de Fourier, les nombres al\u00e9atoires et d'autres t\u00e2ches math\u00e9matiques. Kotlin Bindings for NumPy\u00a0est une biblioth\u00e8que Kotlin qui permet d'appeler des fonctions NumPy \u00e0 partir du code Kotlin en fournissant des wrappers typ\u00e9s de fa\u00e7on statique pour les fonctions NumPy.\r\nContribution\r\nL'ensemble de l'\u00e9cosyst\u00e8me Kotlin repose sur l'open source et n'existerait pas sans l'aide de ses nombreux contributeurs. Kotlin \u00e9merge tout juste dans le domaine de la science des donn\u00e9es et a plus que jamais besoin de votre aide ! Voici comment vous pouvez participer :\r\n\r\n\tParlez des difficult\u00e9s que vous rencontres et partagez vos suggestions pour encore mieux adapter Kotlin aux t\u00e2ches de la science des donn\u00e9es \u2013 vos t\u00e2ches.\r\n\tContribuez aux biblioth\u00e8ques open source associ\u00e9es \u00e0 la science des donn\u00e9es et cr\u00e9ez vos propres biblioth\u00e8ques et outils \u2013 toutes les initiative dont vous pensez qu'elle peuvent aider Kotlin \u00e0 devenir un langage de r\u00e9f\u00e9rence pour la science des donn\u00e9es sont bienvenues.\r\n\r\nLa communaut\u00e9 Kotlin dispose d'un un canal d\u00e9di\u00e9 #datascience sur son Slack. Nous vous invitons \u00e0 rejoindre ce canal pour poser des questions, d\u00e9couvrir dans quels domaines une aide est n\u00e9cessaire et comment vous pouvez contribuer, et bien s\u00fbr partager vos commentaires et votre travail avec la communaut\u00e9.\r\n\r\nGardez \u00e0 l'esprit que Kotlin en est encore au tout d\u00e9but de son parcours pour devenir l'outil de r\u00e9f\u00e9rence pour les scientifiques des donn\u00e9es. C'est une aventure passionnante et pleine de d\u00e9fis qui commence ! Il nous faudra cr\u00e9er un riche \u00e9cosyst\u00e8me d'outils et de biblioth\u00e8ques et ajuster la conception du langage pour r\u00e9pondre aux besoins des t\u00e2ches impliquant des donn\u00e9es. Si vous constatez des probl\u00e8mes, partagez votre exp\u00e9rience - ou impliquez-vous et aidez-nous \u00e0 les corriger. Essayez les outils, en particulier le noyau Jupyter et les biblioth\u00e8ques, et partagez vos r\u00e9actions avec nous.\r\nRessources\r\nEn plus des informations fournies dans cet article, vous pouvez consulter le site web officiel de Kotlin.\r\n\r\nKotlinConf 2019 a donn\u00e9 lieu \u00e0 plusieurs interventions inspirantes sur la science des donn\u00e9es, notamment Kotlin for Science par Alexander Nozik et Gradient Descent with Kotlin par Erik Meijer.\r\n\r\nNous vous recommandons \u00e9galement de regarder ces pr\u00e9sentations des deux derni\u00e8res KotlinConf : l'intervention de Holger Brandl (le cr\u00e9ateur de krangl, qui est \u00e0 Kotlin ce que les pandas sont \u00e0 Python), et celle de Thomas Nield (le cr\u00e9ateur de kotlin-statistics).\r\n\r\nVoil\u00e0 pour aujourd'hui. En r\u00e9sum\u00e9, la communaut\u00e9 adopte Kotlin pour la science des donn\u00e9es \u00e0 un bon rythme, alors maintenant, c'est \u00e0 vous de jouer.\r\n\r\nFaison \u00e9voluer Kotlin ensemble !\r\n\r\nAuteur de l'article original en anglais :\u00a0Andrey Cheptsov","protected":false},"excerpt":{"rendered":"Cette ann\u00e9e lors de la KotlinConf 2019, Roman Belov a livr\u00e9 un aper\u00e7u de l'approche de Kotlin concernant la science des donn\u00e9es. Sa pr\u00e9sentation \"Using Kotlin for data science\" est maintenant accessib","protected":false},"author":{"name":"Delphine Massenhove","link":"https:\/\/blog.jetbrains.com\/fr\/author\/delphine-massenhovejetbrains-com"},"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[89],"tags":[5545,5319,5492,5540],"cross-post-tag":[],"acf":[],"featured_image":null,"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34231"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"},{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=34231"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34231\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=34231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=34231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=34231"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=34231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}