Première rue

Nov 28 2022
Plus qu'informaticien et ingénieur, je suis un être humain. Et en tant qu'être humain, voir est l'une des expériences sensorielles les plus importantes et les plus enrichissantes que nous puissions avoir.

Plus qu'informaticien et ingénieur, je suis un être humain. Et en tant qu'être humain, voir est l'une des expériences sensorielles les plus importantes et les plus enrichissantes que nous puissions vivre. Par conséquent, pour commencer, je vais présenter mon premier tableau de bord construit sur le framework Streamlit (avec l'aide de python, pandas et Altair).

Introduction

Tableaux de bord ? Tableau? PowerBI ? Pourquoi ne pas simplement utiliser des feuilles Excel ?

Le mot « tableau de bord » est certainement un mot à la mode dans le domaine de la science des données, de l'ingénierie des données, de l'intelligence d'affaires, etc. Mais qu'est-ce qu'un tableau de bord ? Et qu'est-ce que je peux en faire ?

D'abord, quand on entend le mot tableau de bord, on se rappelle plus vite un policier tirant des voitures dans les films, au lieu d'un système informatique bourré de cartes. « Vous n'avez pas vu l'excès de vitesse sur le tableau de bord de la voiture ? Eh bien… Un tableau de bord est simplement un cadre visuel qui contient des indicateurs de performance clés, des graphiques et des statistiques. Ils peuvent être réactifs, interactifs et mis à jour en temps réel. Utilisant une approche différente, ce sont des outils de visualisation d'informations organisées par rapport à un scénario de cas spécifique. Pourquoi curated? Parce que le système est fréquemment utilisé et que les données doivent être maintenues à un niveau essentiel pour éviter la suralimentation de l'application. Le temps est crucial et plus l'information est digérée rapidement, mieux c'est.

Alors… Tableau et Power BI ne sont que des frameworks pour créer des tableaux de bord et des histoires. De plus, Excel peut être utilisé pour créer des tableaux de bord. En fait, Excel est l'ancêtre des tableaux de bord… Au final, le mot n'est qu'un terme fantaisiste utilisé pour décrire un système d'information contenant des statistiques.

Comme le disent certains, une image vaut mieux que mille mots, nous passons donc à la partie pratique. Nous terminons l'introduction ici et passons à la sélection des outils et au choix d'un ensemble de données aléatoire pour effectuer l'EDA, puis trouvons des points de stress qui peuvent être résolus ou analysés à l'aide de notre tableau de bord et essayons d'y répondre. Le tout, tout en tableau de bord en parallèle.

La pile

Pour casser efficacement d'énormes quantités de roches, il faut probablement un ensemble d'outils puissants et dédiés. La liste suivante décrit les différents outils utilisés dans le mini projet.

Streamlit . Framework open source qui suit trois grands principes : les scripts en tant que visuels, l'interaction via l'utilisation de composants en tant que variables et le déploiement rapide. En d'autres termes, avec Streamlit, il est possible de créer un tableau de bord visuel attrayant sans avoir besoin de savoir comment utiliser les frameworks frontaux et de style. Ce paradigme permet au système d'ignorer les spécificités de style et de concentrer toute l'attention sur la définition des KPI et sur les meilleures méthodes pour les représenter.

Altaïr. Outil de visualisation de données. Altair a un objectif similaire à Matplotlib, mais il a été construit sur un ensemble de principes différent. Le style de codage suit un paradigme déclaratif et sa syntaxe ressemble au format JSON.

Pandas . Bibliothèque pouvant être utilisée pour explorer, nettoyer et manipuler des données tabulaires. Permet de joindre plusieurs tables, de remplir les valeurs manquantes, de convertir, de nettoyer, de filtrer et d'interroger.

Scikit-Learn . La bibliothèque propose de multiples outils d'analyse de données. De l'apprentissage automatique et des modèles statistiques, des calendriers de formation, des métriques pour la quantification des erreurs et des prédictions de données. En utilisant ce Scikit-Learn, il est possible d'analyser les données rapidement et facilement. Mais gardez à l'esprit que les modèles mis en œuvre ne sont pas à la pointe de la technologie.

Numpy . Améliore le temps nécessaire aux calculs numériques dans l'écosystème Python. Les données natives de Numpy sont constituées de tableaux N-dimensionnels.

Cornichon . Cet outil est utilisé pour la sérialisation et la désérialisation d'objets Python.

L'ensemble de données

Le projet se concentre sur l'exploration de ce que Streamlit a à offrir, et non sur la réalisation d'un projet de science des données organisé de bout en bout. Ainsi, l'ensemble de données que nous allons choisir est presque choisi par pure chance.

Nos résultats consistent en un ensemble de données sur le marché du logement de Seattle (États-Unis). Les instances ont été collectées entre le 14 mai et le 15 mai.

Les composants

Il est maintenant temps de vérifier les différents composants qui s'ajoutent au tableau de bord final. Vérifiez l'implémentation complète sur ma page Github (https://github.com/LOCLuisPereira/streamlit_house_market).

Indicateurs KPI initiaux

Ces métriques KPI sont la première chose que l'utilisateur voit. Ils doivent fournir des informations importantes de manière concise. Streamlit propose un composant semblable à une carte (streamlit.metric), où l'on peut définir le titre, la valeur et un delta du KPI. Ils sont utilisés pour l'identification, la quantification et la fluctuation de valeur de mesure.

Dans notre cas, nous avons le nombre total de maisons et quelques autres moyennes sur le marché du logement de Seattle (telles que le prix moyen des maisons, le nombre d'étages, etc.).

Indicateurs KPI initiaux du tableau de bord

Carte de Seattle et distribution des maisons

Streamlit a un composant de carte qui permet au développeur de créer rapidement un mot ou une carte de la ville (streamlit.map). Ce composant est assez simple et n'a pas d'exigences complexes, car son degré de personnalisation est faible.

Prenons comme exemple, pour vérifier la distribution des instances sur une ville donnée le composant suffit. Mais pour visualiser la distribution des clusters, et leur couleur respective, un autre outil est nécessaire.

Composant de carte

Utilisation d'Altair Map Graph pour la visualisation de clustering

Le composant de carte natif de Streamlit utilise Altair sous le capot. Aussi simple que cela. Nous avons indiqué précédemment que ce composant est plug-and-play, mais n'offre aucun type de personnalisation. Une alternative à l'implémentation native consiste à utiliser Altair Chart et à le lier au composant Streamlit-Altair Chart.

L'emplacement est la clé. Surtout, sur le marché du logement. La même maison peut avoir sa valeur multipliée par 20 simplement en étant située près de l'océan ou en étant à l'intérieur d'une grande ville.

Pour nous assurer que c'est bien vrai, nous avons mené une expérience. En utilisant Scikit-Learn et ses implémentations K-Means, nous exécutons l'algorithme avec un nombre différent de clusters (de 2 à 10). La longitude et la latitude ont été utilisées comme caractéristiques. À chaque passage, nous vérifions le prix moyen d'un logement.

La dernière étape, la visualisation, a été réalisée en fusionnant trois composants. Un curseur pour sélectionner le nombre de clusters souhaité. Une carte Altair pour montrer les instances et l'emplacement de leur carte. Et une base de données, pour montrer le prix moyen pour chaque cluster.

Nombre de grappes = 3
Nombre de grappes = 6

En fin de compte, l'emplacement compte vraiment. Comme nous allons du sud vers le nord, les prix des maisons augmentent. Les maisons du côté gauche de Seattle ont tendance à être moins chères. Sur le marché du logement, plusieurs facteurs peuvent influencer le prix. Par exemple, les maisons du côté droit sont plus proches du continent et il est facile de naviguer vers d'autres parties de Seattle ou des villes proches. Cette raison n'est pas cruciale, mais peut peser sur le prix final de la maison.

Qualité et état

Ce composant est simple et court. À l'aide de deux graphiques à barres, `streamlit.bar_chart`, nous avons tracé la distribution des notes et des conditions. En visualisant le graphique, nous concluons que la majorité des instances se situe au milieu (pour les deux graphiques).

Tracé à barres pour la visualisation de l'état et de la pente

Nous avons tracé ces deux caractéristiques l'une contre l'autre. Si nous considérons que le score moyen est neutre, alors la majorité des maisons ont tendance à se situer du côté neutre des scores. S'ils ne sont pas neutres, ils tombent sur un score positif timide.

Graphique à bulles traçant la note et la corrélation ensemble

Qu'en est-il des rénovations de maison ? Un autre ensemble de KPI

À l'aide de streamlit.metric, nous avons mis en place trois métriques KPI en ligne pour analyser rapidement les données liées aux rénovations de maisons. Nous avons montré le nombre de maisons rénovées, leur représentation par rapport au reste, et quel est le laps de temps entre la construction et l'année de rénovation.

Un autre ensemble de KPI

En regardant le tableau de bord, nous avons constaté que 914 maisons ont été rénovées. Et les maisons ont tendance à être restaurées 56 ans après leur construction.

Un tableau de bord sans graphique en courbes ? Impossible…

Les graphiques linéaires ont tendance à être assez courants. Streamlit propose un composant wrap pour les tracer de manière simple et rapide. Sur notre tableau de bord, nous les utilisons pour voir les ventes de maisons par mois.

Vente de maison au fil du temps

Jetez un coup d'œil… Les mois les plus vendus ont été juillet 2014 et avril 2015.

Chambres et salles de bain ? Les empiler ou les équilibrer ?

Parfois, plus n'est pas étroitement lié à mieux. Pour le confirmer ou le démystifier, nous implémentons une carte thermique qui relie le nombre de chambres, de salles de bains et le prix moyen pour chaque combinaison chambre-salle de bains.

En regardant le nouveau graphique, nous pouvons voir que l'équilibre entre le nombre de chambres et de salles de bain est fondamental. L'industrie favorise les ratios 1:1 et plus de salles de bain que de chambres.

Lorsque vous superposez une chambre à coucher, le prix a tendance à être dans la même fourchette. Mais lors de l'ajout de salles de bains, le prix a toujours tendance à augmenter.

Notre carte de chaleur

Cela peut probablement s'expliquer en suivant un raisonnement simple. Les gens n'aiment pas attendre, et les gens n'aiment pas partager des espaces extrêmement privés. En somme, permettre aux résidents et aux invités d'avoir un degré plus élevé d'intimité conduit à des valeurs plus élevées dans les propriétés.

J'ai une propriété à Seattle… Pouvez-vous m'aider à trouver un juste prix de vente ?

Nous pouvons déconstruire cette question en deux problèmes plus petits. Que pouvons-nous faire pour relier le flux d'informations de l'utilisateur à notre système d'information. Et pouvons-nous utiliser n'importe quel algorithme d'apprentissage automatique pour digérer les données et attribuer un prix possible compte tenu des informations d'entrée.

Streamlit propose plusieurs composants qui relient automatiquement la communication entre l'utilisateur et le système. Dans ce cas précis, nous allons utiliser les composants de formulaire. Ces composants permettent la fusion d'autres composants avec la seule exigence d'un bouton final, qui déclenche la soumission des données.

Formulaire de pontage de la communication utilisateur-système

Les informations du composant de formulaire sont introduites dans deux modèles pré-formés. Après inférence, les données sont envoyées dans le tableau de bord et les utilisateurs peuvent voir deux estimations de valeur possibles.

Étant donné que la mission du projet est de construire un tableau de bord et d'explorer la majorité des composants de Streamlit, nous avons utilisé deux algorithmes de base de modèles d'apprentissage automatique, qui sont implémentés sur Scikit-Learn. Au final, nous avons une crête bayésienne et une forêt aléatoire avec un score R2 de 0,54 et 0,87 sur l'ensemble des données.

Prévisions de prix

On peut se demander, pourquoi garder un modèle avec un score de 0,54 ? Nous avons gardé est comme une blague. Le modèle produit parfois des valeurs négatives. En d'autres termes, le modèle nous dit que nous pouvons acheter une maison… et recevoir de l'argent pour la garder.

Qu'y a-t-il à l'intérieur de la Dataframe ?

Pour cette tâche, Streamlit propose trois options différentes. Un pour les tables statiques, un pour les dataframes et un autre pour JSON. Ici, nous nous concentrerons sur les deux derniers.

La fonction de Dataframe génère un tableau qui permet de visualiser la structure de l'ensemble de données sous forme de tableau. Il est possible de trier les colonnes par ordre croissant ou décroissant, ce qui améliore la visualisation et la sémantique des données.

Table de trame de données Streamlit

La sortie de JSON ressemble à la fonction de vidage, avec indentation, qui est native de la bibliothèque JSON de Python.

Composant JSON éclairé

Les deux composants ont un cas d'utilisation. Le composant dataframe peut être utilisé pour analyser rapidement des informations et, par exemple, trouver des maximums, des minimums, vérifier les valeurs manquantes ou nulles, etc. Le JSON est excellent pour vérifier la structure des données et quel type sauf pour chaque champ de l'ensemble de données.

Prises finales

C'est la fin du chemin pour ce projet. Nous n'avons exploré aucun algorithme délicat ou à la pointe de la technologie. Ils étaient simples en théorie et en mise en œuvre. Mais avec cette implémentation, nous sommes en mesure de méditer et de répondre aux questions sur la qualité du framework et s'il est compatible avec notre pile.

Au final, Streamlit est en mesure de proposer ce qu'il propose. Créer un tableau de bord est aussi simple que d'écrire un script. Les données sont affichées de manière interactive et organisée. Même si nous ne l'avons pas présenté, déployer un prototype est simple et rapide.

À l'heure actuelle, nous ne pouvons voir que deux inconvénients possibles. Routage et style. Routage pour tableau de bord multipage. Styling pour étendre le mécanisme de style actuel et permettre un degré de personnalisation plus élevé.

Mon point de vue personnel sur Streamlit est simple. Je suis très enthousiaste à l'idée de l'utiliser dans mes autres projets. La création de prototypes ou de tableaux de bord internes est rapide, les résultats sont esthétiques et l'EDA devient encore plus excitant... en raison de la simplicité avec laquelle nous pouvons visualiser les données sur le frontend.

Prime. Qu'en est-il des tableaux de bord en temps réel ?

Dans notre projet, nous n'avions pas besoin de mise à jour des données en temps réel. Mais Streamlit propose des méthodes pour mettre en œuvre la visualisation des données en temps réel. Le mécanisme est simple. Créez un composant vide, définissez une boucle, récupérez et alimentez les données… Voilà ! Flux de données continus et en temps réel. Voir les images ci-dessous comme preuve des capacités du framework.

Afficher le tableau de bord et vérifier le prix initial
Le prix vient de changer et le tableau de bord le montre

Ça ! À la prochaine.