Le Machine Learning Avec Python - Fnac-static

Transcription

Le Machine Learningavec PythonDe la théorie à la pratiquePréface de Patrick AlbertCofondateur d’ILOG et du HUB France IAEn téléchargementcode n en ligne QUIZOFFERTE !pendant 1 anMadjid KHICHANEPhD en Intelligence ArtificielleEI XGT NL K.indd 1706/09/2021 08:59:42

Table des matièresLes éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.frSaisissez la référence de l'ouvrage EIMLPYT dans la zone de rechercheet validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.PréfaceIntroduction généraleAvant-propos1. Pourquoi ce livre ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192. À qui s'adresse ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213. Comment est organisé ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234. Comment lire ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245. Quels sont les prérequis pour la lecture de ce livre ? . . . . . . . . . . . . . 256. Qui est l'auteur ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257. Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Partie 1 : La Data Science - Concepts générauxChapitre 1-1La Data Science1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292. L'objectif recherché en Machine Learning. . . . . . . . . . . . . . . . . . . . . . 303. Une expérimentation Machine Learning . . . . . . . . . . . . . . . . . . . . . . 343.1 Types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.2 Préparation des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444. Cycle de vie d'un projet Data Science . . . . . . . . . . . . . . . . . . . . . . . . . 475. Les algorithmes du Machine Learning. . . . . . . . . . . . . . . . . . . . . . . . . 506. Le problème de surapprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

2Le Machine Learning avec PythonDe la théorie à la pratique7. Les paramètres et les hyperparamètres . . . . . . . . . . . . . . . . . . . . . . . . 538. Validation croisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559. Données d'entraînement, de validation et de test . . . . . . . . . . . . . . . 5910. Métriques de performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6010.1 Métriques pour les problèmes de régression . . . . . . . . . . . . . . . . 6210.2 Métriques pour la classification. . . . . . . . . . . . . . . . . . . . . . . . . . 6510.2.1Matrice de confusion binaire . . . . . . . . . . . . . . . . . . . . . . . 6510.2.2Matrice de confusion générale . . . . . . . . . . . . . . . . . . . . . . 6710.2.3Exemple de matrice de confusion . . . . . . . . . . . . . . . . . . . 6810.2.4La courbe ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7010.3 Métriques pour le clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7111. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Partie 2 : Outils techniques de la Data Science Python, NumPy, Pandas et JupyterChapitre 2-2Le langage Python1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732. Python en deux mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743. Installer l'interpréteur Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744. Les bases de la programmation Python. . . . . . . . . . . . . . . . . . . . . . . . 774.1 Hello world avec Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.1.1 La fonction print. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.1.2 La fonction input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.2 Les structures de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.2.1 Les variables numériques . . . . . . . . . . . . . . . . . . . . . . . . . . 824.2.2 Les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . 874.2.3 Le type booléen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.2.4 Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.2.5 Les tuples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Table des matières4.34.44.54.64.74.2.6 Les dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.2.7 Les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.2.8 Liste vs tuple vs dictionnaire vs ensemble . . . . . . . . . . . 105Structurer un code Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064.3.1 L'indentation et les blocs de code . . . . . . . . . . . . . . . . . . 1064.3.2 Écrire une instruction sur plusieurs lignes . . . . . . . . . . . 1074.3.3 Écrire plusieurs instructions sur une ligne . . . . . . . . . . . 1094.3.4 Les commentaires en Python . . . . . . . . . . . . . . . . . . . . . . 109Les instructions conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . 1094.4.1 Les conditions avec la structure if . . . . . . . . . . . . . . . . . . 1104.4.2 Les conditions avec la structure if-else . . . . . . . . . . . . . . 1114.4.3 Les conditions avec la structure if-elif-else . . . . . . . . . . . 112Les boucles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144.5.1 La boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144.5.2 La boucle for et la fonction zip . . . . . . . . . . . . . . . . . . . . 1194.5.3 La boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.5.4 Contrôler les boucles avec break . . . . . . . . . . . . . . . . . . . 1264.5.5 Contrôler les boucles avec continue . . . . . . . . . . . . . . . . 127Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284.6.1 Définir et utiliser une fonction sans paramètre . . . . . . . 1294.6.2 Les fonctions avec paramètres . . . . . . . . . . . . . . . . . . . . . 1314.6.3 Les valeurs par défaut des paramètres . . . . . . . . . . . . . . . 1334.6.4 Renvoi de résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364.6.5 La portée des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374.6.6 Passage d'arguments à une fonction . . . . . . . . . . . . . . . . 1404.6.7 Les fonctions récursives . . . . . . . . . . . . . . . . . . . . . . . . . . 143Les listes en compréhension. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1484.7.1 Les origines des listes en compréhension . . . . . . . . . . . . 1484.7.2 Construire une liste avec les listes en compréhension . . 1494.7.3 Application de fonction avec une listeen compréhension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1504.7.4 Utiliser if-else avec les listes en compréhension . . . . . . . 1514.7.5 Filtrer avec les listes en compréhension . . . . . . . . . . . . . 1523

4Le Machine Learning avec PythonDe la théorie à la pratique4.8 Les expressions régulières. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1524.8.1 Regex sans caractères spéciaux . . . . . . . . . . . . . . . . . . . . 1554.8.2 Regex avec caractères spéciaux . . . . . . . . . . . . . . . . . . . . 1574.8.3 Regex avec les multiplicateurs. . . . . . . . . . . . . . . . . . . . . 1594.8.4 Regex avec un nombre d'occurrences limité . . . . . . . . . . 1624.8.5 Regex avec groupage des résultats. . . . . . . . . . . . . . . . . . 1634.8.6 Taille des motifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1644.8.7 Aller plus loin avec les expressions régulières . . . . . . . . . 1694.9 Gestion des exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1704.9.1 La levée des exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . 1704.9.2 Utiliser le bloc try-except. . . . . . . . . . . . . . . . . . . . . . . . . 1724.9.3 Gérer plusieurs exceptions . . . . . . . . . . . . . . . . . . . . . . . . 1734.9.4 Utiliser la clause finally . . . . . . . . . . . . . . . . . . . . . . . . . . 1754.9.5 Utiliser la structure try-except-finally-else . . . . . . . . . . . 1764.9.6 Lever une exception avec raise. . . . . . . . . . . . . . . . . . . . . 1785. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Chapitre 2-2La bibliothèque NumPy1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1812. NumPy en deux mots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1823. Les tableaux NumPy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1823.1 Création de tableaux NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . 1823.1.1 Créer un tableau à une dimension. . . . . . . . . . . . . . . . . . 1833.1.2 Créer un tableau à plusieurs dimensions . . . . . . . . . . . . 1833.2 Les dimensions d'un tableau NumPy . . . . . . . . . . . . . . . . . . . . 1853.3 Le type et la taille d'un tableau NumPy . . . . . . . . . . . . . . . . . . 1873.4 Fonction d'initialisation de tableaux NumPy . . . . . . . . . . . . . . 1894. Accéder aux données d'un tableau NumPy. . . . . . . . . . . . . . . . . . . . 1914.1 Accès aux données d'un tableau à une dimension . . . . . . . . . . 1914.2 Accès aux données d'un tableau à deux dimensions . . . . . . . . 193

Table des matières4.3 Accès aux données d'un tableau à trois dimensions . . . . . . . . . 1955. Modifier les données d'un tableau NumPy . . . . . . . . . . . . . . . . . . . . 1966. Copier un tableau NumPy dans un autre tableau NumPy . . . . . . . 1977. Algèbre linéaire avec NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1997.1 Opérations mathématiques de base avec NumPy . . . . . . . . . . 1997.2 Opérations sur les matrices avec NumPy . . . . . . . . . . . . . . . . . 2018. Réorganiser des tableaux NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . 2028.1 Restructurer un tableau NumPy . . . . . . . . . . . . . . . . . . . . . . . . 2028.2 Superposer des tableaux NumPy . . . . . . . . . . . . . . . . . . . . . . . . 2049. Statistiques descriptives avec NumPy. . . . . . . . . . . . . . . . . . . . . . . . 20510. Lire des données NumPy à partir d'un fichier . . . . . . . . . . . . . . . . . . 20711. Les masques booléens avec NumPy. . . . . . . . . . . . . . . . . . . . . . . . . . 20811.1 Créer et utiliser un masque booléen . . . . . . . . . . . . . . . . . . . . . 20811.2 Un masque avec plusieurs conditions . . . . . . . . . . . . . . . . . . . . 21011.3 Les fonctions numpy.any et numpy.all . . . . . . . . . . . . . . . . . . 21112. Tableaux NumPy versus listes Python . . . . . . . . . . . . . . . . . . . . . . . 21312.1 Comparaison des tailles en mémoire. . . . . . . . . . . . . . . . . . . . . 21412.2 Comparaison des temps de calcul . . . . . . . . . . . . . . . . . . . . . . . 21512.2.1Temps de calcul sur une liste Python . . . . . . . . . . . . . . . 21612.2.2Temps de calcul sur un tableau NumPy . . . . . . . . . . . . . 21713. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Chapitre 2-3La bibliothèque Pandas1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2192. C'est quoi, Pandas ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2203. Installation de Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2215

6Le Machine Learning avec PythonDe la théorie à la pratique4. DataFrame Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2224.1 Création d'un DataFrame à partir d'un dictionnaire . . . . . . . . 2234.2 Création d'un DataFrame à partir d'un tableau NumPy . . . . . 2254.3 Chargement des données à partir de fichiers . . . . . . . . . . . . . . 2264.3.1 Lecture des données d'un fichier CSV . . . . . . . . . . . . . . . 2274.3.2 Lecture d'un fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . 2285. Accès aux données d'un DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . 2295.1 Lire les lignes d'un DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . . 2305.1.1 Lire une ligne d'un DataFrame. . . . . . . . . . . . . . . . . . . . . 2305.1.2 Lire plusieurs lignes d'un DataFrame . . . . . . . . . . . . . . . 2305.1.3 Parcourir les lignes d'un DataFrame . . . . . . . . . . . . . . . . 2315.1.4 Filtrer les lignes avec une condition . . . . . . . . . . . . . . . . 2325.1.5 Filtrer les lignes avec plusieurs conditions . . . . . . . . . . . 2325.1.6 Filtrage avec des critères textuels . . . . . . . . . . . . . . . . . . 2335.1.7 Réinitialiser les index . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2345.1.8 Filtrer avec les valeurs uniques . . . . . . . . . . . . . . . . . . . . 2365.1.9 Filtrer avec une expression régulière . . . . . . . . . . . . . . . . 2365.2 Accéder aux variables d'un DataFrame . . . . . . . . . . . . . . . . . . . 2375.2.1 Liste des variables d'un DataFrame . . . . . . . . . . . . . . . . . 2375.2.2 Accès aux valeurs d'une colonne . . . . . . . . . . . . . . . . . . . 2385.2.3 Accès à plusieurs colonnes . . . . . . . . . . . . . . . . . . . . . . . . 2385.3 Lire une cellule spécifique avec les index. . . . . . . . . . . . . . . . . . 2396. Modifier un DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396.1 Modifier les valeurs dans un DataFrame. . . . . . . . . . . . . . . . . . 2396.2 Modifier la structure d'un DataFrame . . . . . . . . . . . . . . . . . . . 2406.2.1 Ajouter une variable à un DataFrame . . . . . . . . . . . . . . . 2406.2.2 Réordonner les variables d'un DataFrame. . . . . . . . . . . . 2436.2.3 Supprimer une variable d'un DataFrame . . . . . . . . . . . . 2446.2.4 Utiliser la méthode melt pour diminuerle nombre de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 2456.3 Appliquer une fonction sur une variableavec la méthode apply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476.4 Modification avec conditions . . . . . . . . . . . . . . . . . . . . . . . . . . 249

Table des matières6.5 Ajouter des lignes dans un DataFrame . . . . . . . . . . . . . . . . . . . 2507. Tri sur les données d'un DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . 2517.1 Tri avec un seul critère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517.2 Tri avec plusieurs critères. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2538. Sauvegarder les données d’un DataFrame. . . . . . . . . . . . . . . . . . . . . 2549. Faire des statistiques sur un DataFrame . . . . . . . . . . . . . . . . . . . . . . 2559.1 Faire un résumé direct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559.2 Faire un résumé par agrégation . . . . . . . . . . . . . . . . . . . . . . . . . 2569.3 Agrégation avec plusieurs paramètres . . . . . . . . . . . . . . . . . . . . 25810. Lecture des fichiers de grande taille . . . . . . . . . . . . . . . . . . . . . . . . . . 25911. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Chapitre 2-4Travailler avec Jupyter1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632. Installation de l'environnement Anaconda et Jupyter . . . . . . . . . . . 2643. Travailler avec Jupyter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2703.1 Les documents dans Jupyter . . . . . . . . . . . . . . . . . . . . . . . . . . . 2723.1.1 Créer un dossier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2733.1.2 Renommer un dossier. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2743.1.3 Déplacer un dossier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2753.1.4 Charger des documents . . . . . . . . . . . . . . . . . . . . . . . . . . 2763.1.5 Supprimer des éléments . . . . . . . . . . . . . . . . . . . . . . . . . . 2773.1.6 Navigation dans l'arborescence des dossiers . . . . . . . . . . 2783.1.7 Créer un notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2793.2 Utiliser un notebook Jupyter . . . . . . . . . . . . . . . . . . . . . . . . . . . 2803.2.1 Renommer un notebook . . . . . . . . . . . . . . . . . . . . . . . . . 2803.2.2 Les cellules Jupyter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2813.2.3 Les fonctionnalités d'un notebook . . . . . . . . . . . . . . . . . 2857

8Le Machine Learning avec PythonDe la théorie à la pratique3.3 Utiliser les widgets Jupyter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2913.3.1 Le widget FloatSlider . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2913.3.2 Associer une fonction à un slider. . . . . . . . . . . . . . . . . . . 2923.3.3 Le widget interact. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2943.3.4 Le widget Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2963.3.5 Le widget DatePicker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2964. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Partie 3 : Les statistiquesChapitre 3-1Statistiques1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2992. Les statistiques descriptives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3002.1 Paramètres de position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3002.1.1 La moyenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3002.1.2 Le mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3012.1.3 La médiane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3012.1.4 Les quartiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3042.2 Paramètres de dispersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3042.2.1 La variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3052.2.2 Calcul de la variance avec la formule de Koenig. . . . . . . 3052.2.3 L'écart-type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3052.2.4 L'écart interquartile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3063. Les lois de probabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3064. La loi normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3085. L'échantillonnage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3125.1 Principe de l'échantillonnage . . . . . . . . . . . . . . . . . . . . . . . . . . . 3125.2 Résultats sur la distribution des moyennes . . . . . . . . . . . . . . . 3135.3 Résultats sur la distribution des proportions . . . . . . . . . . . . . . 3225.4 Théorème central limite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Table des matières6. Les statistiques inférentielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3276.1 Estimation ponctuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3286.2 Estimation de la moyenne par intervalle de confiance. . . . . . . 3326.3 Estimation d'une proportion par intervalle de confiance. . . . . 3366.4 Test d'hypothèse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3406.4.1 Tests paramétriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3416.4.2 Tests non paramétriques . . . . . . . . . . . . . . . . . . . . . . . . . 3416.4.3 Construire un test d'hypothèse . . . . . . . . . . . . . . . . . . . . 3426.5 Types de tests d'hypothèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3456.5.1 Test de conformité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3456.5.2 Test d'adéquation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3466.5.3 Tests d'homogénéité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3476.5.4 Test d'indépendance de variables . . . . . . . . . . . . . . . . . . 3486.6 Exemple numérique de test de conformité d'une moyenne. . . 3496.7 Le paradoxe de Simpson. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3527. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354Partie 4 : Les grands algorithmes du Machine LearningChapitre 4-1La régression linéaire et polynomiale1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3552. La régression linéaire simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3562.1 La régression linéaire simple de point de vue géométrique . . . 3572.2 La régression linéaire simple de point de vue analytique . . . . . 3582.2.1 La méthode des moindres carrés . . . . . . . . . . . . . . . . . . . 3582.2.2 Quelques considérations statistiques sur les données . . 3603. La régression linéaire multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3613.1 La méthode des moindres carrés pour la régression multiple . 3623.2 La méthode de la descente de gradient . . . . . . . . . . . . . . . . . . . 3639

10Le Machine Learning avec PythonDe la théorie à la pratique3.3 Exemple de régression linéaire multiple . . . . . . . . . . . . . . . . . . 3643.3.1 Définition du jeu de données utilisées . . . . . . . . . . . . . . 3643.3.2 Régression linéaire multiple avec Scikit-learn . . . . . . . . 3653.3.3 Importer les modules Scikit-learn . . . . . . . . . . . . . . . . . . 3663.3.4 Lecture des données dans un DataFrame . . . . . . . . . . . . 3673.3.5 Normalisation des données . . . . . . . . . . . . . . . . . . . . . . . 3683.3.6 Construction d'un modèle linéaire . . . . . . . . . . . . . . . . . 3713.3.7 Évaluation d'un modèle linéaire. . . . . . . . . . . . . . . . . . . . 3733.3.8 Évaluer le futur comportement d'un modèle . . . . . . . . . 3773.3.9 Cross-validation avec KFold. . . . . . . . . . . . . . . . . . . . . . . 3804. La régression polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3884.1 Exemple de régression polynomiale. . . . . . . . . . . . . . . . . . . . . . 3894.1.1 Construction d’un modèle polynomial . . . . . . . . . . . . . . 3894.1.2 Le coefficient de détermination R2 . . . . . . . . . . . . . . . . . 3964.1.3 R2 et les valeurs extrêmes . . . . . . . . . . . . . . . . . . . . . . . . 3984.1.4 Modèle polynomial et surapprentissage . . . . . . . . . . . . . 3985. Aller plus loin avec les modèles de régression . . . . . . . . . . . . . . . . . . 4045.1 La régularisation Lasso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4045.2 La régularisation Ridge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4056. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405Chapitre 4-2La régression logistique1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4072. La régression logistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4083. Prédire les survivants du Titanic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4123.1 Définition du jeu de données Titanic . . . . . . . . . . . . . . . . . . . . 4123.2 Réalisation du modèle de régression logistique . . . . . . . . . . . . 4133.2.1 Chargement des modules Scikit-learn. . . . . . . . . . . . . . . 4133.2.2 Lecture des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4143.2.3 Traitement des valeurs manquantes . . . . . . . . . . . . . . . . 415

Table des matières3.2.43.2.53.2.63.2.73.2.8Transformation de variables . . . . . . . . . . . . . . . . . . . . . . 416Sélection des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 418Traitement des variables catégorielles. . . . . . . . . . . . . . . 420Entraînement du modèle logistique . . . . . . . . . . . . . . . . 421Le seuil de décision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4224. L'algorithme One-vs-All . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4265. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426Chapitre 4-3Arbres de décision et Random Forest1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4271.1 Construction d'un arbre de décision . . . . . . . . . . . . . . . . . . . . . 4281.2 Prédire la classe d'appartenance avec un arbre de décision . . . 4311.3 Considérations théoriques sur les arbres de décision . . . . . . . . 4321.3.1 Choix de la variable de segmentation . . . . . . . . . . . . . . . 4331.3.2 Profondeur d'un arbre de décision . . . . . . . . . . . . . . . . . . 4342. Problème de surapprentissage avec un arbre de décision . . . . . . . . . 4393. Random Forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4394. Exemple de Random Forest avec Scikit-learn . . . . . . . . . . . . . . . . . . 4405. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446Chapitre 4-4L’algorithme k-means1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4472. k-means du point de vue géométrique . . . . . . . . . . . . . . . . . . . . . . . 4483. k-means du point de vue algorithmique . . . . . . . . . . . . . . . . . . . . . . 4554. Application de k-means avec Scikit-learn . . . . . . . . . . . . . . . . . . . . . 4575. L'algorithme k-means et les valeurs extrêmes. . . . . . . . . . . . . . . . . . 46411

12Le Machine Learning avec PythonDe la théorie à la pratique6. Choisir le k de k-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4706.1 Déterminer k avec la méthode Elbow . . . . . . . . . . . . . . . . . . . . 4736.2 Déterminer k avec le coefficient de silhouette . . . . . . . . . . . . . 4797. Les limites de k-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4858. Avantages et inconvénients de l'algorithme k-means . . . . . . . . . . . 4909. Quelques versions de l'algorithme k-means . . . . . . . . . . . . . . . . . . . 49110. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491Chapitre 4-5Support Vector Machine1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4932. Le SVM du point de vue géométrique. . . . . . . . . . . . . . . . . . . . . . . . 4943. Le SVM du point de vue analytique . . . . . . . . . . . . . . . . . . . . . . . . . 4984. Données non linéairement séparables. . . . . . . . . . . . . . . . . . . . . . . . 5034.1 Le Kernel Trick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5054.2 La condition de Mercer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5074.3 Exemple de fonction noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5075. Détecter les fraudes de cartes de crédit . . . . . . . . . . . . . . . . . . . . . . . 5085.1 Les données des transactions de cartes de crédit . . . . . . . . . . . 5085.2 Application de l'algorithme SVM pour la détectiondes transactions bancaires frauduleuses . . . . . . . . . . . . . . . . . . 5095.2.1 Application de l'algorithme SVM surles données creditcard.csv . . . . . . . . . . . . . . . . . . . . . . . . 5095.2.2 Application du SVM sur un sous-ensemblede creditcard.csv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5165.2.3 Application du SVM sur des données normalisées. . . . . 5185.3 Les paramètres de l'algorithme SVM. . . . . . . . . . . . . . . . . . . . . 5235.3.1 Le paramètre Kernel pour la variationde la fonction noyau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5245.3.2 Le paramètre C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5255.3.3 Le paramètre Gamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

Table des matières5.3.4 Le paramètre C versus le paramètre Gamma . . . . . . . . . 5315.3.5 Tuning des hyperparamètres d'un SVMavec GridSearchCV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5316. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535Chapitre 4-6Analyse en composantes principales1. Objectif du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5372. Pourquoi l'ACP ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5383. L'ACP du point de vue géométrique . . . . . . . . . . . . . . . . . . . . . . . . . 5404. L'ACP du point de vue analytique . . . . . . . . . . . . . . . . . . . . . . . . . . . 5425. Indicateurs de la qualité de la représentation des données . . . . . . . 5455.1 Indicateurs liés aux individus . . . . . . . . . . . . . . . . . . . . . . . . . . 5455.1.1 Score des individus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5465.1.2 Qualité de la représentation des individus . . . . . . . . . . . 5465.1.3 Contribution des individus . . . . . . . . . . . . . . . . . . . . . . . 5465.2 Indicateurs liés aux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 5475.2.1 Le cercle des corrélations . . . . . . . . . . . . . . . . . . . . . . . . . 5475.2.2 Qualité de la représentation des variables. . . . . . . .

Téléchargement www. editions-eni.fr .fr Madjid KHICHANE PhD en Intelligence Artificielle Le Machine Learning avec Python De la théorie à la pratique Préface de Patrick Albert Cofondateur d'ILOG et du HUB France IA