fbpx

Celina Lee : La DataScience Pour le Monde, par les Africains

Celina Lee : La DataScience Pour le Monde, par les Africains

On peut difficilement parler de datascience en Afrique sans Ă©voquer Zindi-Africa. Depuis sa crĂ©ation, la star-up Sud Africaine est devenue une rĂ©fĂ©rence pour nombre de data-scientistes du continent. C’est donc tout naturellement que nous publions l’entretien Celina Lee, fondatrice de Zindi avait accordĂ©e Ă  notre ancienne collaboratrice Aminata Mbodj. Elle revient sur la crĂ©ation de la plateforme, sa vision et les perspectives qu’offrent la data-science et l’intelligence artificielle en Afrique.

Qu’est-ce qui pousse une personne originaire de San Francisco Ă  choisir de faire la promotion de la science des donnĂ©es en Afrique ?

Mon premier diplĂŽme Ă©tait en mathĂ©matiques et en informatique, donc j’ai toujours Ă©tĂ© trĂšs intĂ©ressĂ©e par la puissance des donnĂ©es. TrĂšs tĂŽt dans ma carriĂšre, je me suis lancĂ©e dans le dĂ©veloppement international. J’ai travaillĂ© dans le secteur Ă  but non lucratif pendant de nombreuses annĂ©es : sur des questions allant de la santĂ© publique Ă  l’inclusion financiĂšre, en passant par le genre. Mais j’ai toujours eu cette vision de la façon dont nous pourrions mieux utiliser les donnĂ©es pour faire avancer le travail que nous faisions. Et pour prendre de meilleures dĂ©cisions afin d’accroĂźtre notre impact.

Comment pouvons-nous utiliser l’apprentissage automatique et la science des donnĂ©es pour faire progresser et amĂ©liorer la vie de chacun ? Je suis arrivĂ©e en Afrique du Sud pour un emploi dans une ONG, mais trĂšs vite, je suis entrĂ©e en contact avec mes cofondateurs, Megan Yates et Ekow Duker. Ils dirigeaient une sociĂ©tĂ© de conseil en sciences des donnĂ©es. À l’époque, ils souhaitaient  un  « Kaggle » pour l’Afrique.  Qui est la façon la plus simple de dĂ©crire l’origine de Zindi. Mais je pense que Zindi est beaucoup plus que cela !

Celina Lee SEO de Zindi

Celina Lee SEO de Zindi avec une partie du staff © DR

Ce qui compte, avant tout, est sa mission sociale, qui est de dĂ©velopper l’écosystĂšme des sciences des donnĂ©es en Afrique pour faire de l’I.A. quelque chose d’accessible Ă  tous.

Qu’est-ce qui distingue Zindi des autres plateformes ?

Je pense que la premiĂšre chose qui nous diffĂ©rencie des autres plateformes de compĂ©tition est ce que nous essayons vraiment d’accomplir. Ce qui compte, avant tout, est sa mission sociale, qui est de dĂ©velopper l’écosystĂšme des sciences des donnĂ©es en Afrique pour faire de l’I.A. quelque chose d’accessible Ă  tous. Nous voulions donc crĂ©er un espace pour que les organisations et les entreprises africaines, qui gĂ©nĂšrent des quantitĂ©s massives de donnĂ©es, et qui n’ont pas les ressources ou peut-ĂȘtre mĂȘme les compĂ©tences internes nĂ©cessaires pour tirer parti puissent dĂ©sormais avoir accĂšs aux ressources et aux solutions dont elles ont besoin.

Et puis aussi, bien sĂ»r, il s’agissait de crĂ©er un espace pour les data scientists africains. Pour que ce rĂ©servoir de talents puisse continuer Ă  dĂ©velopper leurs compĂ©tences sur des problĂšmes rĂ©els et correspondant Ă  leur quotidien. DĂ©velopper leurs portefeuilles de projets et aussi Ă©tablir des liens entre eux, ainsi qu’avec des organisations qui ont besoin de personnes comme elles. C’est donc ce que Zindi essaie vraiment de faire. Et je pense que c’est ce qui nous rend diffĂ©rents. Et c’est vraiment au cƓur du succĂšs que nous avons connu jusqu’à prĂ©sent.

Celina Lee SEO de Zindi

David Davis ambassadeur Zindi en Tanzani   © DR

Donc, vous diriez que c’est un changement de mentalitĂ© ?

Je pense que ce qui est passionnant avec Zindi, c’est que ce que nous faisons vraiment : mettre en valeur les talents qui sont disponibles sur le marchĂ© du travail.Et, vous savez, lorsqu’une entreprise possĂšde des donnĂ©es ; avant qu’elle ne se dise, “oh mon Dieu, je dois protĂ©ger mes donnĂ©es, car elles sont trĂšs prĂ©cieuses.” Ça ne leur sert pas grand chose.

Cependant, quand ils viennent Ă  Zindi, ils peuvent se dire, “ok, il y a des milliers de data scientists qui peuvent me dĂ©velopper un modĂšle de prĂ©diction ou encore de computer vision ainsi qu’une panoplie de systĂšmes afin de rĂ©soudre tous mes diffĂ©rents types de problĂšmes de maniĂšre trĂšs concrĂšte. OK, c’est quelque chose que je veux.” Ce n’est donc pas nĂ©cessairement un changement de mentalitĂ©, mais c’est qu’ils sont capables de voir de maniĂšre tangible, que ces compĂ©tences leurs sont accessibles.

Donc, vous diriez que c’est un changement de mentalitĂ© ?

Je pense que ce qui est passionnant avec Zindi, c’est que ce que nous faisons vraiment : mettre en valeur les talents qui sont disponibles sur le marchĂ© du travail.Et, vous savez, lorsqu’une entreprise possĂšde des donnĂ©es ; avant qu’elle ne se dise, “oh mon Dieu, je dois protĂ©ger mes donnĂ©es, car elles sont trĂšs prĂ©cieuses.” Ça ne leur sert pas grand chose.

Cependant, quand ils viennent Ă  Zindi, ils peuvent se dire, “ok, il y a des milliers de data scientists qui peuvent me dĂ©velopper un modĂšle de prĂ©diction ou encore de computer vision ainsi qu’une panoplie de systĂšmes afin de rĂ©soudre tous mes diffĂ©rents types de problĂšmes de maniĂšre trĂšs concrĂšte. OK, c’est quelque chose que je veux.” Ce n’est donc pas nĂ©cessairement un changement de mentalitĂ©, mais c’est qu’ils sont capables de voir de maniĂšre tangible, que ces compĂ©tences leurs sont accessibles.

La premiĂšre chose Ă  faire est de se jeter Ă  l’eau : tĂ©lĂ©charger un ensemble de donnĂ©es et jouer avec

Celina Lee SEO de Zindi

 © DR

Quels conseils donneriez vous aux jeunes data scientists ?

Le plus important est de croire en soi, d’avoir suffisamment confiance en soi, d’essayer simplement de faire quelque chose. Je sais que beaucoup de nouveaux data scientists peuvent se sentir intimidĂ©s. Mais je pense que la premiĂšre chose Ă  faire est de choisir un concours sur un sujet qui est important pour vous, qui peut vous enthousiasmer et vous passionner, de tĂ©lĂ©charger cet ensemble de donnĂ©es et de commencer tout simplement Ă  explorer les donnĂ©es.

MĂȘme si vous n’en arrivez pas au point oĂč vous faites une soumission sur le classement, en jouant simplement avec ces donnĂ©es et en essayant de rĂ©pondre aux questions par vous-mĂȘme avec les donnĂ©es, vous franchirez une Ă©tape importante. J’ai fait partie d’un autre panel oĂč nous avons un peu parlĂ© du syndrome de l’imposteur. Et je pense que les femmes en particulier, dans cet espace, en souffrent beaucoup.

C’est quelque chose oĂč nous ne devons pas nous laisser prendre. Nous devons nous approprier ce que nous savons et avoir la confiance nĂ©cessaire pour continuer Ă  avancer pas Ă  pas et poursuivre notre voyage. Chacun d’entre nous a son propre parcours personnel et nous devons croire suffisamment en nous pour nous permettre de continuer ce voyage pas Ă  pas. Ce processus peut ĂȘtre lent ou rapide ; et ainsi va la vie. Mais je pense que ce qui est important dans ce que fait Zindi, et ce que nous voulions faire, c’est de rendre cette expĂ©rience accessible Ă  tous. La premiĂšre chose Ă  faire est donc de se jeter Ă  l’eau : tĂ©lĂ©charger un ensemble de donnĂ©es et jouer avec.

Graph de barres animées avec Plotly.Graph

Graph de barres animées avec Plotly.Graph

Dans le lot des data-visualisations Ă  vocation narrative, les graphiques Ă  barres animĂ©es sont souvent trĂšs recherchĂ©s aussi bien pour leur interactivitĂ© que pour leur cĂŽtĂ© ludique et esthĂ©tique. De nombreuses librairies ou applications Java Script en ligne du type Flourish les rendent facilement rĂ©alisables et intĂ©grables sur site web sans avoir besoin d’Ă©crire la moindre ligne de code. Du cĂŽtĂ© des librairies  graphiques python, c’est plus compliquĂ©. La plupart sont trĂšs performantes pour accompagner l’analyse de donnĂ©es mais en matiĂšre de narration et elles sont souvent limitĂ©es et pas toujours trĂšs attractives.   

 Plotly.py est, Ă  mon sens, la librairie graphique python qui peut se rapprocher le plus de ce qu’il on peut rĂ©aliser en java script. Le module plotly.express permet de crĂ©er facilement des graphiques courants en une seule fonction. L’ensemble  Plotly Graph_object fournit un important panel de composants pour rĂ©aliser des graphiques pointus de façon intuitive. Et le Framework Plotly Dash permet de les intĂ©grer Ă  des applications et de les dĂ©ployer sur le web. En gros, Plotly peut ĂȘtre le terrain de jeu privilĂ©giĂ© pour les adeptes de graphiques et de data-visualisations 100% Python.

Dans cet article nous utiliserons Plotly Graph Objects  pour rĂ©aliser le graphique Ă  barres animĂ©es ci-dessous  afin de visualiser et de comparer la progression du Top 10 des Ă©quipes africaines de football au classement Caf/FIFA depuis sa crĂ©ation en 1992 jusqu’à la derniĂšre actualisation de mars 2022. Nous verrons ensuite comment nous pouvons l’intĂ©grer sur le post en nous servant d’une hĂ©bergement sur Github.  

 

 Préparation des données

Nous utilisons deux datasets collectés sur le site de la FIFA et sur Kaggle. Ils sont disponibles ici

Le premier rassemble des donnĂ©es sur l’historique du classement FIFA des Ă©quipes de la CAF. Le second est de donnĂ©es des drapeaux de chaque pays sous forme emojis.

 

import pandas as pd

#Caf Dataframe
CafRanking = pd.read_csv('df_afrika_rank.csv')

#Emojis dataFrame

Emoji = pd.read_csv('emojiflags.csv')

#print(CafRanking)
#print(Emoji)

 

 

 

 

#merge datasets 
CafRanking = pd.merge(CafRanking, Emoji[['country', 'flag']], left_on = 'country_team', right_on='country', how = 'inner') 


#drop column 
CafRanking = CafRanking.drop(columns=['country'])

 

Attribution des couleurs

Nous devons assigner une couleur unique à chaque pays. Pour ce faire, nous créons une fonction qui accepte en entrée notre dataframe et la série à laquelle nous attribuons un code couleur « hex » généré de façon aléatoire avec random.randint. La fonction renvoie notre dataframe avec une nouvelle colonne « code_color » contenant les couleurs uniques à chaque pays.

                       

Préparation du Frame

 Pour rĂ©aliser une Bar Chart Race nous devons transformer notre dataframe et crĂ©er une sĂ©quence d’images afin qu’Ă  chaque date corresponde un dataframe. Ici, nous avons 319 occurrences allant du 1992-12-31 au 2022-03-11.   Il y a plusieurs façons de configurer ses frames. Nous avons choisit de crĂ©er un dictionnaire « x_frame »  Ă  partir de 2 listes :   

  • « list_dates » : la liste de toutes nos objets dates.
  • « dict_keys » : la liste de nos clĂ©s sur la longueur de « list_dates ».
  • On utilise la fonction « zip » pour faire itĂ©rer les deux listes.
  • On crĂ©Ă© un nouveau dataframe sur la valeur date.
  • Avec la mĂ©thode « nlargest() » nous dĂ©finissons le nombre barres que souhaitons avoir sur la figure.
  • Nous classons les dates par ordre croissant avec la fonction `sort_values()`.
  • Enfin, nous attribuons chaque clĂ© un dataframe ex :{‘0′: dataframe1[1992-12-31],’1’: dataframe2[1993-08-08] } etc.

         

Création de la Figure 

   Si ce n’est pas dĂ©jĂ  fait, il faut d’abord installer Plotly et  importer Plotly Graph Objects.    

pip install plotly
import plotly.graph_object as go

 

 Notre visualisation est construite autour de 3 éléments principaux :   

  • nos data  x, y, avec leurs paramĂštres
  • Le  Layout : la mise en page (titre, axes, buttons, style etc.)
  • Le Frame que nous avons prĂ©parĂ© ci-dessus.

 Nous crĂ©ons un graphique Ă  barres Ă  l’aide de Ploty.graph_objects.Bar.  Nos x reçoivent les valeurs numĂ©riques de` »total_points »` du tableau « 0 » renvoyant  Ă  la  date initiale : « 1992-12-31 ». Idem pour  y « country_team ». On entre ensuite nos paramĂštres :   

  • l’orientation des barres,
  • la largeur,
  • les donnĂ©es couleur
  • les donnĂ©es texte
  • les infos de survol etc.

       
On se retrouve avec un graphique Ă  barres basique horizontal et correctement ordonnĂ©;   La mise en page Le deuxiĂšme Ă©lĂ©ment, le Layout que nous crĂ©ons est la mise en page Ă  l’aide de la fonction plotly.graph_objects.Layout. On va y dĂ©finir:   Ainsi que toutes les donnĂ©es que l’on souhaite afficher dans notre template.
A ce stade, nous avons le cadre de la visualisation au complet. Par contre, elle est en « mode start ». Pour qu’elle puisse fonctionner, il nous faut intĂ©grer le Frame. Dans le cas prĂ©sent, le Frame n’est pas trĂšs complexe Ă  crĂ©er. Il est composĂ© de nos datas et de notre Layout que l’on va reprendre quasiment Ă  l’identique et inclure ces Ă©lĂ©ments dans une liste comprĂ©hension qui va boucler sur nos valeurs, donc sur tous nos DataFrames. En gros, avons la structure suivante :  frames = [(value[data]), (value[layout] ) for keys, value in x_frame.items() ]

Il est important de garder les mĂȘmes Ă©lĂ©ments de styles afin de conserver  le mĂȘme aspect graphique tout le dĂ©roulĂ© de l’animation. On peut cependant ajouter des donnĂ©es qui apparaitront une fois qu’elle sera lancĂ©e ou Ă  la fin, en fonction de ce que l’on souhaite visualiser. Ici,  nous avons ajoutĂ© l’Ă©quipe leader et le rang qu’elle occupe Ă  une date donnĂ©e.

 Intégration via HTML et Github

Une des difficultĂ©s rencontrĂ©s avec les graphs Plotly, c’est quand il s’agit de les intĂ©grer dans un site web. Plotly Chart Studio ne prenant pas en charge gratuitement les graphiques de plus de 500 Ko. Parmi les alternatives, on a la plateforme Datapane, trĂšs pratique et complĂ©tement gratuite, mais qui affiche. Ă©galement des limites de taille de fichiers (moins de 5000 lignes). A mon sens la meilleure option c’est  d’Ă©crire notre visualisation en HTML et de l’hĂ©berger sur des pages GitHub. Pour cela nous devons passer par 2 Ă©tapes :

 Créer le HTML
Pour générer le fichier HTML de la visualisation Plotly, utilisez : 

import plotly.io as pio

pio.write_html(fig, file=index.html, auto_open = True)

Ce code ouvre la visualisation dans un fichier HTML local dans votre navigateur avec la visualisation.

HĂ©berger vers des pages GitHub

  • Publier la visualisation vers des pages Github est assez simple.
  • CrĂ©ez un nouveau repo Github et initialisez-le avec un README.md.
  • TĂ©lĂ©chargez le fichier index.html que nous venons de crĂ©er et « commitez-le » sur la branche master ou main.
  • Cliquez sur paramĂštres, et faites dĂ©filer jusqu’Ă  la section des pages Github et sous ‘Source’ sĂ©lectionnez ‘master branch’ et ‘docs’ pour le chemin

Dans le cas présent on obtient 

 

<iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plot.ly/~elizabethts/9.embed" height="525" width="100%"></iframe>

 

 

4 – Conclusion

MĂȘme si le graphique n’est pas officiellement documentĂ© dans les paramĂštres de Plotly, on peut s’appuyer sur la structure pour en rĂ©aliser. Ici nous avons pu en construire une assez basique qui peut largement ĂȘtre amĂ©liorĂ©e.
Le code peut parfois paraĂźtre un peu long mais la stylisation et ses paramĂštres occupent beaucoup de place.

 

Umojahack 2022 : Rencontre Emmanuel Koupoh data-scientiste, ambassadeur Zindi

Umojahack 2022 : Rencontre Emmanuel Koupoh data-scientiste, ambassadeur Zindi

Les 19 mars et 20 mars derniers a eu lieu la 3Ăšme Ă©dition de l’Umojahack-Africa, hackathon inter-universitaire virtuel d’intelligence artificielle ouvert aux Ă©tudiants de toute l’Afrique organisĂ© par la plateforme de concours Zindi. Pendant 2 jours, les Ă©tudiants d’universitĂ©s, d’instituts ou d’Ă©coles de formation Ă  la science des donnĂ©es rĂ©partis sur tout le continent, se sont affrontĂ©s afin de trouver des solutions d’apprentissage automatique (Machine Learning) Ă  des problĂšmes concrets.

Emmanuel Koupoh, enseignant au DIT (Dakar Institute of Technologies), data-scientiste Ă  Bamtu et ambassadeur Zindi au SĂ©nĂ©gal,  qui a dĂ©jĂ  participĂ© et remportĂ© des challenges Zindi,  revient sur son expĂ©rience de cette compĂ©tition, sur ce qu’elle lui a apportĂ© et sur la meilleure façon dont il faut l’aborder.

Cette annĂ©e les data scientistes ont planchĂ© sur la qualitĂ© de l’air en Ouganda (dĂ©butants);  sur des  prĂ©visions en assurance au Zimbabwe (intermĂ©diaires) et sur  la confection d’anti-venin (avancĂ©s). La prime de 10 000 $ a Ă©tĂ© rĂ©partie entre les 3 vainqueurs des 3 catĂ©gories.

Emmanuel. Koupoh, datascientiste et ambassadeur Zindi à Dakar © DR

Comment as-tu connu Zindi?

J’ai connu Zindi un peu par hasard. C’était pendant l’annĂ©e scolaire de 2018- 2019, j’étais Ă  ESATIC Ă  Abijdan, en troisiĂšme annĂ©e de SIGL (SystĂšmes Informatiques et GĂ©nie Logiciel). Un ami m’a envoyĂ© le lien de la plateforme. Nous avons trouvĂ© que ça pouvait nous permettre de progresser. Donc nous nous sommes inscrits et nous avons commencĂ© Ă  participer à  plusieurs challenges. Comme j’avais dĂ©jĂ  fait du Deep-Learning, je choisissais des compĂ©titions orientĂ©es dans ce domaine. A l’époque,  j’avais peu de pratique des donnĂ©es tabulaires et je galĂ©rais beaucoup avec les datasets.

C’est quand je me suis inscrit au DIT (Dakar Institute of Technology), en datascience, que j’ai pu m’attaquer plus facilement Ă  des challenges orientĂ©s Machine Learning et basĂ©s sur le traitement et sur l’analyse de donnĂ©es.  C’est comme  cela que j’ai remportĂ© le “Umojahack-Africa Expresso” challenge en 2020. Ça consistait Ă  prĂ©dire le  nombre d’ abonnĂ©s qui allaient quitter le rĂ©seau de la compagnie de tĂ©lĂ©phone.

 

Celina Lee SEO de Zindi

Lors de la remise des prix de l’UmoJahack 2020   © DR

Qu’est ce que tu trouves d’intĂ©ressant dans ces concours?

DĂ©jĂ  pour la pratique ça permet de se comparer aux autres. Quand tu passes deux semaines Ă  travailler sur un modĂšle et que tu vois que tu n’es que 100Ăšme au classement, tu te poses des questions. Tu vas chercher des solutions pour amĂ©liorer ton score.  Tu te rends compte rapidement que pour ĂȘtre dans le haut du classement,  il faut plus qu’un simple Random Forest  et qu’il faudra travailler sur plusieurs algorithmes pour entraĂźner ton modĂšle.  On apprend Ă©galement Ă  travailler avec les notebooks des autres, Ă  comparer les modĂšles, Ă  les combiner. En fait, tu cherches tout le temps Ă  amĂ©liorer ton classement et quand tu tombes sur une compĂ©tition qui t’intĂ©resse, tu n’arrĂȘtes plus.

Donc participer Ă  ces challenges t’ont permis d’engranger de l’expĂ©rience.

Oui, lĂ  encore une expĂ©rience pratique. Car les donnĂ©es utilisĂ©es pour les compĂ©titions proviennent de vĂ©ritables compagnies, la plupart du temps africaines, et  qui sont confrontĂ©es Ă  des problĂšmes concrets. De plus, d’un point de vue personnel, on peut rĂ©utiliser les donnĂ©es. Par exemple pour Ă©crire un  mĂ©moire,  dans le cadre d’un travail universitaire. Moi j’ en ai utilisé  pour faire le pre-training d’un model en attendant d’avoir les donnĂ©es rĂ©elles. Et c’est trĂšs important car nous n’avons pas beaucoup de donnĂ©es Ă  notre disposition. Collecter des donnĂ©es,  les traiter,  les labĂ©liser ça prend du temps et de l’argent.  Et Zindi prend le temps de nettoyer et de classifier les donnĂ©es mises Ă  notre disposition.

Tu cherches tout le temps Ă  monter au classement et quand tu tombes sur une compĂ©tition qui t’intĂ©resse, tu n’arrĂȘtes plus.

En dehors de l’aspect compĂ©tition, est-ce que participer Ă  un challenge peut offrir des opportunitĂ©s ?

DĂ©jĂ , ça permet d’ĂȘtre en relation avec d’autres datascientistes. Et oui,  Zindi met de plus en plus l’accent sur l’accompagnement des  datascientistes dans la recherche d’emploi. Depuis plus d’un an,  il y a une section jobs avec des annonces.  Tout rĂ©cemment, Zindi a lancĂ© une compĂ©tition Trail-Blazzers. En gros, les compĂ©titeurs qui arrivaient Ă  dĂ©passer un score de rĂ©fĂ©rence pouvaient bĂ©nĂ©ficier d’une formation afin d’amĂ©liorer leur CV et Ă©taient prioritaires pour  les offres d’emplois proposĂ©es par Zindi.

Et puis il y a le systĂšme des ambassadeurs. On peut gĂ©rer une communautĂ©, Ă©changer avec le staff des ambassadeurs. On vous propose de faire des prĂ©sentations ou de produire du contenu sur le blog de la plateforme etc. En gros, tant de  choses qui te permettent d’apprendre ton mĂ©tier.

As tu des conseils donner Ă  ceux qui. vont s’attaquer pour la 1Ăšre fois Ă  l’Umojahack de samedi?

Avant tout il faut garder la tĂȘte froide. C’est Ă  dire ne pas partir dans tous les sens. Prendre le temps de bien comprendre les jeux de donnĂ©es qui sont proposĂ©s et commencer Ă  partir d’un plan solide. De plus je consieillerai aux candidats de faire les challenges de training que Zindi a mis Ă  disposition Ils   correspondent aux diffĂ©rents niveaux et servent de simulation. Moi en tant qu’ambassadeur j’essaie d’aider  Ă  se prĂ©parer ceux qui veulent se lancer.  Je partage des starters notebook ou j’organise des prĂ©sentation pour expliquer ce Ă  quoi ils auront Ă  faire.

Mais au dĂ©part l’essentiel c’est de lancer sans apprĂ©hension car, de toutes façons, on  a rien Ă . perdre. Au contraire.