- Entraîner un modèle d'apprentissage automatique à l'aide de bibliothèques Python dans un carnet Jupyter
- Incorporer un modèle d'apprentissage automatique dans une application web Streamlit
Voici les activités de cette leçon :
TRAVAILLER AVEC DES MODÈLES D'APPRENTISSAGE AUTOMATIQUE
Une autre caractéristique majeure de Jupyter Notebooks, Python et Streamlit est la possibilité de former des modèles d'apprentissage automatique et de faire des prédictions.
Si vous êtes novice en matière d'intelligence artificielle, vous pouvez consulter les leçons sur l'intelligence artificielle de ce programme pour apprendre les bases avant de vous lancer dans le codage plus avancé dont il est question ici. Vous pouvez utiliser une plateforme de modèles d'apprentissage automatique conviviale comme Teachable Machine pour créer un modèle et l'incorporer dans une application Web Python.
Si vous avez une certaine expérience de l'intelligence artificielle et du travail avec des ensembles de données à l'aide de Jupyter Notebooks, il s'agit d'une bonne prochaine étape pour vous.
Dans cette leçon, vous découvrirez quelques-unes des bibliothèques d'apprentissage automatique Python, ainsi que les différents modèles d'apprentissage automatique que vous pouvez créer à l'aide de Python.
Pour résumer, la création d'un modèle d'apprentissage automatique se compose de trois parties principales.
DATASET
TROUVE DES MODÈLES À L'AIDE D'UN ALGORITHME D'APPRENTISSAGE
PREDICTION !
L'ensemble de données est l'entrée du modèle. Il peut s'agir de texte, d'images, de sons ou de poses. Dans l'unité 2, nous avons travaillé avec des données textuelles et numériques à l'aide des carnets Jupyter. Dans cette leçon, nous continuerons à travailler avec des données textuelles, sous la forme d'une feuille de calcul.
La recherche de motifs consiste essentiellement à construire le modèle d'apprentissage automatique à partir de l'ensemble des données. Python contient de nombreuses bibliothèques qui permettent de construire un modèle d'IA à partir de données. Dans ce programme, nous utiliserons de nombreuses fonctions du paquetage scikit-learn. Outre les bibliothèques qu'il fournit, le site web contient de nombreuses et excellentes informations sur l'apprentissage automatique et le processus de construction de modèles. C'est une excellente ressource pour en savoir plus !
Une fois que vous avez créé votre modèle, celui-ci peut être utilisé pour prédire un résultat sur la base de nouvelles informations. Une fois de plus, Python fournit des bibliothèques qui permettent de le faire.
LE PRÉTRAITEMENT DES DONNÉES
Avant que votre ensemble de données ne soit envoyé à l'algorithme pour construire le modèle, il doit être prétraitéou "nettoyé" afin que l'algorithme de construction du modèle puisse travailler avec lui et créer le modèle le plus précis possible. En fait, le gros du travail de création d'un modèle d'apprentissage automatique réside dans le prétraitement. Vous devrez examiner attentivement les données pour décider de ce qui est important, de ce qui peut être laissé de côté et de ce qui doit être nettoyé.
Qu'est-ce que le prétraitement ? Dans le cas d'un ensemble de données textuelles, voici quelques éléments à prendre en compte.
Valeurs nulles
Il arrive que l'ensemble de données contienne des valeurs vides ou nulles, en particulier s'il s'agit de données d'enquête. Parfois, vous éliminerez toutes les lignes contenant des données nulles.
Toutefois, si le nombre d'échantillons est faible, il se peut que vous ne souhaitiez pas les éliminer. Une autre option consiste à remplacer une valeur nulle par une autre valeur. Il peut s'agir de zéro ou de la moyenne de toutes les autres valeurs de ce champ.
Valeurs aberrantes
Les données contiennent parfois un ou deux échantillons très différents du reste des données. Cela peut fausser le modèle. Vous ne voulez pas que les valeurs aberrantes affectent la façon dont le modèle est créé, c'est pourquoi les valeurs aberrantes sont souvent éliminées de l'ensemble de données.
Par exemple, dans un ensemble de données, 95 % des échantillons sont constitués de personnes âgées de 10 à 30 ans, mais quelques échantillons aléatoires sont constitués de personnes âgées de plus de 50 ans. Étant donné que la grande majorité des échantillons se situe dans la tranche d'âge 10-30 ans, vous pouvez envisager d'éliminer les échantillons de la tranche d'âge supérieure.
Normalisation
Souvent, les chiffres d'un grand ensemble de données varient en fonction des caractéristiques représentées. Par exemple, vous pouvez avoir l'âge, qui varie de 0 à 70, mais aussi le salaire, qui varie de 0 à 500 000 ! Les échelles sont très différentes, de sorte qu'une caractéristique peut compter davantage dans le modèle.
Pour y remédier, vous pouvez standardiser les données afin qu'elles soient sur une seule échelle. scikit-learn fournit un StandardScaler, qui met à jour chaque caractéristique afin que la moyenne soit de 0 et l'écart-type de 1.
Une autre chose à prendre en compte est un nombre équilibré d'échantillons pour chaque classe ou étiquette. Vous voulez vous assurer qu'il y a à peu près le même nombre de chaque classe dans votre ensemble de données.
Encodage
L'IA aime les chiffres, pas nécessairement les mots. Il est donc utile de convertir toutes les données en nombres. scikit-learn fournit des fonctions Encoder, qui permettent de convertir facilement une série de valeurs textuelles possibles en une série de nombres.
Un exemple pourrait être les niveaux d'activité, avec des valeurs d'échantillon sédentaires, légères, modérées, élevées. Ces réponses peuvent être codées en valeurs 0, 1, 2 et 3, ce qui est beaucoup plus facile à gérer pour l'algorithme de construction de modèle.
SÉPARATION DES DONNÉES
Une fois que vous avez prétraité vos données, vous devez les diviser en un ensemble de formation et un ensemble de test. L'ensemble d'entraînement sera utilisé pour former et créer le modèle. Vous testerez ensuite votre modèle à l'aide de l'ensemble de test pour voir comment il fonctionne.
Il existe des méthodes standard de répartition (généralement 75 % pour la formation et 25 % pour les tests), mais vous pouvez répartir les données comme vous le souhaitez. Là encore, des fonctions sont fournies afin que tout soit automatisé pour vous.
CRÉATION DU MODÈLE
L'étape suivante consiste à créer le modèle. La grande décision à prendre est la suivante : quel algorithme dois-je utiliser ? Il existe de nombreux algorithmes d'apprentissage supervisé et il est difficile de savoir lequel utiliser. Une bonne méthode consiste à essayer plusieurs algorithmes différents et à déterminer celui qui offre la meilleure précision.
La première étape consiste à déterminer si vous avez besoin d'une classification ou d'un algorithme de régression de régression. Cela dépend de ce que vous essayez de prédire.
Les algorithmes de classification sont utilisés pour prédire des cibles ou des classes discrètes. Par exemple, la classification d'un courrier électronique en tant que spam ou non spam est un problème de classification
Les algorithmes de régression sont utilisés pour prédire quelque chose qui se situe dans une plage continue. Un exemple serait de prédire le montant du salaire d'une personne. La prédiction est une plage de nombres et la sortie peut être n'importe quelle valeur de cette plage.
Voici quelques-uns des types d'algorithmes de création de modèles les plus courants.

Classification
- Arbre de décision
- Forêt aléatoire
- Voisins les plus proches (K-Nearest Neighbors)
- Naive Bayes
- Régression logistique
- Support Vector Machine
Régression
- Régression linéaire
- Régression de la crête
- Régression Lasso
- Régression polynomiale
- Régression linéaire bayésienne
- Support Vector Regression
Notez que certains algorithmes relèvent des deux types. Par exemple, il existe un classificateur d'arbre de décision et un régresseur d'arbre de décision. Une machine à vecteurs de support fonctionne pour la classification, et la régression à vecteurs de support fonctionne pour la régression.
Alors, comment décider lequel utiliser ? Vous devriez faire des recherches pour voir ce que d'autres scientifiques des données utilisent dans différentes situations afin de déterminer ce qui pourrait convenir à votre modèle. Vous devriez également essayer différents algorithmes avec vos données et trouver celui qui offre la meilleure précision. Vous pouvez également modifier les paramètres d'un algorithme particulier pour voir s'il produit un modèle plus précis.
scitkit-learn fournit des fonctions pour tous ces algorithmes, il est donc facile de créer le modèle.
ÉVALUATION DU MODÈLE
Vous voulez que votre modèle soit le meilleur possible, vous devez donc évaluer ses performances. Deux variables courantes dans l'évaluation d'un modèle sont le biais et la variance.
Le biais est la différence entre la valeur prédite par le modèle et la valeur correcte.
La variance est le degré de variation des prédictions lorsque des données différentes sont utilisées.
Il s'agit de trouver un bon équilibre entre le biais et la variance.
Biais élevé -> sous-adaptation.
L'insuffisance d'adaptation se produit lorsque le modèle est trop simple pour tenir compte du bruit dans les données d'apprentissage. Cela peut se produire s'il n'y a pas assez de données ou pas assez de caractéristiques (colonnes), ou encore trop de bruit dans les données. Si un modèle n'est pas performant à la fois sur les données d'apprentissage et sur les données de test, cela signifie qu'il est sous-adapté.
Variance élevée -> surajustement.
L'overfitting se produit lorsque vous entraînez un modèle sur un ensemble de données et qu'il donne de très bons résultats, mais que si vous lui présentez ensuite de nouvelles données, il ne donne pas du tout de bons résultats. Cela peut se produire si le modèle est trop complexe et qu'il tente de s'adapter trop étroitement aux données d'apprentissage. Le modèle peut prédire très bien sur les données d'apprentissage, mais ne donne pas de bons résultats sur les données de test.
La validation croisée est une technique permettant de vérifier les performances d'un modèle.
La validation croisée consiste à entraîner votre modèle plusieurs fois, en utilisant à chaque fois différentes répartitions des données d'entraînement/de test. Votre ensemble de données est divisé en plusieurs plisou sous-ensembles. Ensuite, un pli est retenu comme ensemble de validation ou de test, et les autres plis sont utilisés pour la formation. Cette opération est effectuée plusieurs fois, de sorte que les ensembles de formation et de test changent à chaque fois.
sciikit-learn fournit également une fonction métriques afin que vous puissiez facilement obtenir des scores de performance pour vos modèles.
- score de précision = prédictions correctes/total des prédictions
- précision = vrais positifs/(vrais positifs + faux positifs)
- rappel = vrais positifs/(vrais positifs + faux négatifs)
- Score F1 = (2 x précision x rappel)/(précision + rappel)
- spécificité = vrai négatif/ (vrais positifs + faux négatifs)
- matrice de confusion - indique le nombre de vrais positifs, de vrais négatifs, de faux positifs et de faux négatifs
En vérifiant les mesures de différents algorithmes, vous pouvez choisir le meilleur modèle.
PREDICTION !
Une fois que vous êtes satisfait du modèle, vous souhaitez l'utiliser dans votre application.
Il est courant d'effectuer le prétraitement, la création et l'évaluation de votre modèle à l'aide de Python, dans un environnement tel que Jupyter Notebooks. À partir de là, vous pouvez exporter votre modèle sous forme de fichier.
Ensuite, dans votre application Streamlit, vous pouvez charger le modèle et l'utiliser pour faire des prédictions.
Dans les activités de cette leçon, vous suivrez l'ensemble de ce processus en utilisant un ensemble de données sur les risques d'accident vasculaire cérébral. Vous verrez comment prétraiter les données, créer des modèles à l'aide de différents algorithmes, puis utiliser un modèle dans une simple application Streamlit pour prédire le risque d'accident vasculaire cérébral, compte tenu de certaines caractéristiques d'entrée.
ACTIVITÉ 1 : FORMATION D'UN MODÈLE D'INTELLIGENCE ARTIFICIELLE DANS JUPYTER NOTEBOOK
Explorer un ensemble de données sur les risques d'AVC pour construire un modèle d'IA
- Téléchargez un ensemble de données de prédiction d'AVC à partir de Kaggle.
- Travaillez avec les données dans un carnet Jupyter pour :
- Examiner les données
- Prétraiter les données pour les préparer au modèle
- Créer des modèles différents
- Évaluer et choisir un modèle pour votre application
- Exporter le modèle
DÉFI

Essayez un modèle différent de ceux du carnet Jupyter.
- Recherchez d'autres algorithmes de classification sur le site web scikit-learn et consultez d'autres exemples de construction de modèles sur Kaggle.
- Choisissez un algorithme et ajoutez le code à votre cahier pour créer le modèle.
- Utilisez les métriques scikit-learn pour vérifier la précision.
Quelles sont les performances de votre modèle ? Est-il meilleur que les autres algorithmes du carnet ?
ACTIVITÉ 2 : CONSTRUIRE UNE APPLICATION DE PRÉDICTION
Utilisez votre modèle dans une application Streamlit
Choisissez la vidéo appropriée en fonction de la façon dont vous codez votre application, soit localement avec Visual Studio Code, soit en ligne avec Codespaces.
DÉFI

L'ensemble de données Iris est un ensemble de données classique qui classe les fleurs d'iris en trois espèces (setosa, versicolor et virginica) sur la base des dimensions des pétales et des sépales.
- Effectuez des recherches sur l'ensemble de données afin de connaître ses caractéristiques et ses cibles.
- Vous pouvez télécharger l'ensemble de données et créer votre propre modèle ou utiliser ce modèle(fichier pickle) créé à l'aide des K-voisins les plus proches. Notez qu'aucun scaler n'a été nécessaire pour cet ensemble de données. Le fichier pickle ne contient que le modèle.
- Importez le modèle et créez une application Streamlit pour prédire l'espèce d'iris en fonction des quatre caractéristiques du jeu de données.
INSPIRATION TECHNOVATION
Voici quelques exemples étonnants de participants à Technovation qui ont utilisé Python et Streamlit pour créer des applications web intégrant des modèles d'apprentissage automatique.
T.E.D.D.Y - Text-based Early Distress Detector for Youth , by Team TEDDY des États-UnisTEDDY aide les enseignants et les conseillers à détecter rapidement les problèmes de santé mentale des élèves. TEDDY utilise l'intelligence artificielle pour identifier les phrases exprimant un sentiment négatif ou présentant les schémas de langage attendus des personnes souffrant de dépression. Les élèves peuvent alors être orientés vers un conseiller pour obtenir de l'aide.
RÉFLEXION
Vous avez suivi tout le processus de prétraitement d'un ensemble de données, de construction de plusieurs modèles, d'évaluation et de choix de l'un d'entre eux pour l'utiliser dans une application. C'est BEAUCOUP de choses à apprendre en une seule leçon !

RÉVISION DES TERMES CLÉS
- Prétraitement - Prendre un ensemble de données et s'assurer que les données qu'il contient sont adaptées à la formation d'un modèle d'apprentissage automatique.
- Algorithme de classification - algorithme utilisé pour former un modèle d'apprentissage automatique qui classifie ou prédit des valeurs discrètes
- Algorithme de régression - algorithme utilisé pour former un modèle d'apprentissage automatique afin de prédire une valeur sur une plage continue
- Biais - différence entre la valeur prédite par le modèle et la valeur correcte, due à des hypothèses incorrectes qui simplifient le modèle.
- Variance - le degré de variabilité des prédictions d'un modèle, lorsqu'un modèle n'est pas en mesure de se généraliser face à de nouvelles données.
- Sur ajustement - lorsque le modèle s'adapte trop bien aux données d'apprentissage et qu'il ne peut pas prédire correctement les nouvelles données, en raison d'une variance élevée dans le modèle.
- Insuffisance d'adaptation - lorsqu'un modèle est trop simplifié et ne donne pas de bons résultats sur les données d'apprentissage ou de test, en raison d'un biais important ou d'hypothèses dans le modèle.
RESSOURCES SUPPLÉMENTAIRES
Apprentissage automatique
- Geeks for Geeks Machine Learning Tutorial - donne une excellente introduction et une vue d'ensemble de certains processus et de la terminologie de l'apprentissage automatique.
- Simplilearn's Scikit-Learn tutorial - passe en revue un ensemble de données sur la qualité du vin pour s'entraîner à utiliser scikit-learn dans un carnet Jupyter.
- Apprentissage automatique avec scikit-learn - une liste de lecture complète sur Youtube par Data School
Éclairé par la lumière du jour
- Build a Machine Learning Web App from Scratch avec Patrick Loeber - un autre exemple de construction d'un modèle et de son utilisation dans une application web, du début à la fin.
- Classificateur d'images avec Streamlit, si votre modèle est formé sur des images