This commit is contained in:
johanleroy
2025-09-19 08:58:26 +02:00
parent b6da7f744c
commit 10477cdf94
4 changed files with 3416 additions and 0 deletions

1328
M05_TP01_Solution.ipynb Normal file

File diff suppressed because one or more lines are too long

614
M06_TP01_Exercice.ipynb Normal file
View File

@@ -0,0 +1,614 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "0c601b14",
"metadata": {},
"source": [
"# TP n°1 du module 6 : Les algorithmes de classification pour le _Machine Learning_\n",
"\n",
"Dans ce TP, nous allons mettre en pratique les principes de l'apprentissage supervisé.\n",
"\n",
"## Objectifs :\n",
"- Savoir mettre en place les principaux algorithmes de classification\n",
"- Etudier l'impact de leurs paramètres sur leurs performances\n",
"- Comparer les performances de différents algorithmes"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "8423b3aa",
"metadata": {},
"outputs": [],
"source": [
"# Ajoutez ici les imports de librairies nécessaires\n",
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "82e63125",
"metadata": {},
"source": [
"## Question n°0\n",
"Commencez par charger à nouveau le jeu de données Titanic, à partir du csv généré dans le TP1 du module 4.\n",
"- Préparez les données d'entraînement et de test qui seront utilisées par la suite."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "79f23c2b",
"metadata": {},
"outputs": [],
"source": [
"# Lambda nommée pour afficher un score en pourcentage avec un libellé (avec détail) :\n",
"pscore = lambda lib, score, detail='': print(F\"{lib}{('',f\" ({detail})\")[len(str(detail))>0]} : {100*score:.2f}%\")\n",
"\n",
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "fc39d16d-6a9f-4fa6-ac5d-da5266c98583",
"metadata": {},
"source": [
"## Partie 1 : découvrir Naive Bayes"
]
},
{
"cell_type": "markdown",
"id": "6f7717c4",
"metadata": {},
"source": [
"### Question n°1\n",
"Commencez par créer un modèle basé sur Naive Bayes, sans changer les paramètres par défaut, en supposant que la répartition des données correspond à une Gaussienne (loi normale).\n",
"- Entraînez-le et testez-le.\n",
"- Quelle score (accuracy) obtenez-vous ?\n",
"- Que pouvez-vous dire de la précision et du rappel ?\n",
"- Comparez avec les scores obtenus sur les arbres de décision au module 5\n",
"- Avez-vous des hypothèses pour expliquer cette différence ?"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "dd0f1d68",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "5a68e940-c814-44fe-927b-e66c8904d99a",
"metadata": {},
"source": [
"#### Observations :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "1af14ab5",
"metadata": {},
"source": [
"### Question n°2\n",
"Affichez une matrice de corrélation des données du jeu d'entraînement, en y incluant un affichage textuel de la valeur de la corrélation.\n",
"- Voyez-vous des informations permettant d'expliquer les performance de l'algorithme _Naive Bayes_ ?"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "3b3d1c81",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "00130884-072e-4d7b-9d16-7f6dded39a8c",
"metadata": {},
"source": [
"#### Observations :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "351eae75",
"metadata": {},
"source": [
"### Question n°3\n",
"Proposez une représentation graphique des attributs continus, permettant de vérifier l'hypothèse que nous avons faite, selon laquelle ces données suivent une loi normale (Gaussienne)."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "b6b5b059",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "627d1608-9f5b-42cf-9666-10f86709f5b9",
"metadata": {},
"source": [
"#### Observations :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "dab510d0",
"metadata": {},
"source": [
"## Partie 2 : découvrir KNN"
]
},
{
"cell_type": "markdown",
"id": "90779015",
"metadata": {},
"source": [
"### Question n°1\n",
"Commencez par créer un modèle KNN, en gardant le nombre de voisins par défaut (à regarder dans la documentation).\n",
"- Que pouvez-vous dire de l'accuracy, de la précision et du rappel ?"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "8f8e1696",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "1e4734d3-58a3-483f-8ffb-a898dadab63c",
"metadata": {},
"source": [
"#### Observations :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "f991f919",
"metadata": {},
"source": [
"### Question n°2\n",
"Nous allons maintenant observer l'impact du nombre de voisins à prendre en considération.\n",
"- Faite varier k entre 1 et 20.\n",
"- Calculez à chaque fois accuracy, précision, et rappel.\n",
"- Tracez l'évolution de ces trois scores en fonction de k, sur un même graphique.\n",
"- Que constatez-vous ?\n",
"- Affichez la valeur de k pour laquelle l'accuracy est la plus élevée."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "b65bb998",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "88905973-56e2-42a7-9fce-6619592b9b7a",
"metadata": {},
"source": [
"#### Observations :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "18ec66e2",
"metadata": {},
"source": [
"### Question n°3\n",
"En prenant la valeur de _k_ qui vous semble la plus pertinente, faite varier la dimension (p) utilisée pour calculer la distance de Minkowski entre 2 données.\n",
"- Cette distance a-t'elle un fort impact sur les résultats d'accuracy obtenus ?\n",
"- Montrez-le en montrant l'évolution de ce score en fonction de _p_<br/> (faire varier entre 1 et 10).\n",
"- Ajoutez également la précision et le rappel."
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "ce6b99d8",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "d13a3756-fc4c-441d-846d-26e848db111b",
"metadata": {},
"source": [
"#### Observations :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "fec73153-fbe1-4503-8bda-be6125a3691e",
"metadata": {},
"source": [
"## Partie 3 : découvrir les SVM"
]
},
{
"cell_type": "markdown",
"id": "0a7c6024",
"metadata": {},
"source": [
"### Question n°1\n",
"Créez un modèle de classification basée sur les machines à vecteur de support.\n",
"- Dans un premier temps, gardez les options par défaut.\n",
"- Que pouvez-vous dire des performances obtenues (accuracy, précision, rappel) ?"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "3b136dbf",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "b07b1658-849c-4cdc-9f9b-c763291c1890",
"metadata": {},
"source": [
"#### Observations :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "905b31a7",
"metadata": {},
"source": [
"### Question n°2\n",
"Testez les différents noyaux disponibles pour l'algorithme SVM (linéaire, polynomial, rbf et sigmoïde).\n",
"- Représentez graphiquement l'accuracy, la précision et le rappel, pour chaque noyau.\n",
"- Il y en a t'il un qui semble plus pertinent que les autres ?\n",
"- Affichez-le, ainsi que les scores obtenus pour ce noyau."
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "e68429cd",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "014b5138",
"metadata": {},
"source": [
"### Question n°3\n",
"Nous allons essayer d'améliorer les performances obtenues avec le noyau polynomial.\n",
"- Utilisez ce noyau (`poly`), et faites varier le degré du polynôme utilisé de 1 à 10.\n",
"- Représentez graphiquement l'accuracy, la précision et le rappel, en fonction du degré du polynôme.\n",
"- Il y en a-t-il un qui semble plus pertinent que les autres ?\n",
"- Affichez-le, ainsi que les scores obtenus pour cette valeur.\n",
"- Comparez avec le meilleur score obtenu à la question précédente."
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "544318b0",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "25f11b31",
"metadata": {},
"source": [
"## Partie 4 : découvrir les réseaux de neurones (ANN)"
]
},
{
"cell_type": "markdown",
"id": "77448c8c",
"metadata": {},
"source": [
"### Question n°1\n",
"Commençons par étudier le réseau le plus simple : un _perceptron_.\n",
"- À l'aide de la classe `sklearn.linear_model.Perceptron`,<br/> créez un perceptron, en gardant les options par défaut.\n",
"- Affichez `accuracy`, `précision` et `rappel` : Que pensez-vous de ces performances ?"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "0d2620da",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "646a3f3a-7382-4728-951d-d14637df4ca4",
"metadata": {},
"source": [
"#### Observation :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "bda13ed8",
"metadata": {},
"source": [
"### Question n°2\n",
"Regardez la documentation pour créer un réseau de neurones (`sklearn.neural_network.MLPClassifier`) :\n",
"- Quelle est la structure d'un réseau de neurones par défaut avec scikit-learn ?\n",
"- Combien de couches cachées ?\n",
"- Combien de neurones par couche ?\n",
"\n",
"_N.B. : Un message d'alerte (⚠Warning: Stochastic Optimizer: Maximum iterations) est suceptible d'apparaître._"
]
},
{
"cell_type": "markdown",
"id": "e627e744-c82a-4cd9-b215-58694948a2c3",
"metadata": {},
"source": [
"#### Réponse :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "f4ae8d40",
"metadata": {},
"source": [
"### Question n°3\n",
"- Créer un réseau de neurones, en gardant ces options par défaut.\n",
"- Affichez `accuracy`, `précision` et `rappel` :\n",
" - Que pensez-vous de ces performances, notamment en comparant par rapport au perceptron ?\n",
" - Avez-vous un message d'alerte ?<br/>(⚠Warning: Stochastic Optimizer: Maximum iterations)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "652f5cca",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "06a6ba7f-2e4b-4a51-9ed8-42a1a5c36551",
"metadata": {},
"source": [
"#### Observation :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "3f9b9f82",
"metadata": {},
"source": [
"### Question n°4\n",
"Si vous avez observé un message d'alerte sur la question précédent :\n",
"- Que signifie-t'il selon vous ?\n",
"- Que pouvez-vous faire pour y remédier ?\n",
"- Proposez un code permettant d'obtenir des résultats, sans message d'alerte.\n",
"- Qu'observez-vous sur l'évolution des scores ?"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "7268b9a1",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "720ecf9a-c376-41e1-bbf3-7e3261a53120",
"metadata": {},
"source": [
"#### Observation :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "132b2069",
"metadata": {},
"source": [
"### Question n°5\n",
"Nous allons à présent comparer différentes architectures du réseau de neurones :\n",
"- 3 couches de 50 neurones chacune\n",
"- 5 couches de 50 neurones chacune\n",
"- 3 couches :\n",
" 1. 50 neurones,\n",
" 2. 100 neurones,\n",
" 3. 50 neurones\n",
"- 5 couches :\n",
" 1. 50 neurones,\n",
" 2. 100 neurones,\n",
" 3. 50 neurones,\n",
" 4. 100 neurones,\n",
" 5. 50 neurones\n",
"\n",
"**Les attendus :**\n",
"- Représentez graphiquement l'_accuracy_, la _précision_ et le _rappel_, pour chaque architecture.\n",
"- Il y en a t'il une qui semble plus pertinente que les autres ?\n",
"- Affichez-la, ainsi que les scores obtenus pour cette architecture.\n",
"- Comparez avec le score obtenu par l'architecture par défaut.\n",
"- Votre code ne doit générer aucun message d'alerte."
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "1027a554",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "e437de59",
"metadata": {},
"source": [
"### Question n°6\n",
"En utilisant l'architecture qui vous donnait les meilleures performances, étudier l'impact de la fonction d'activation utilisée sur les performances.\n",
"- Représentez sur un graphiques les scores (accuracy, précision et rappel) obtenus pour les quatres fonctions d'activation proposées par _Scikit-Learn_.\n",
"- Affichez la fonction qui vous parait la plus pertinente, ainsi que les scores associés."
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "9ad2a684",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "60141a50",
"metadata": {},
"source": [
"## Partie 5 : comparer les performances des différents algorithmes\n",
"\n",
"Nous allons à présent résumer les différentes performances des algorithmes que vous avez testé dans ce TP :\n",
"- Récupérez les meilleurs scores (accuracy) obtenu pour chaque algorithme.\n",
"- Représentez-les sur un diagramme en barres, en regroupant par algorithme, et en représentant chaque score par une couleur.\n",
"- Un algorithme semble-t'il obtenir de meilleures performances que les autres ?"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "2318f1a5",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "fe7a5b28",
"metadata": {},
"source": [
"## Partie 6 : optimiser la recherche des paramètres optimaux"
]
},
{
"cell_type": "markdown",
"id": "62b98a2e-281c-49fb-93b4-0a71d690e572",
"metadata": {},
"source": [
"Dans ce TP, nous avons souvent cherché à identifier la meilleur combinaison de paramètres. Nous avons procédé par itération, en cherchant à fixer un paramètre avant de faire évoluer les autres. Cette méthode est coûteuse, et pour faire une recherche exhaustive, nécessite, de répéter très souvent le même code. Scikit-learn propose une classe, `sklearn.model_selection.GridSearchCV`, qui va permettre d'optimiser cette recherche de paramétrage optimal.\n",
"\n",
"_Lien vers la documentation :_ [sklearn.model_selection.GridSearchCV](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html)\n",
"\n",
"Le principe est de définir un dictionnaire, où la clé correspond à un paramètre, et la valeur à la liste de valeurs possibles à tester pour le paramètre considéré. \n",
"\n",
"### Consigne :\n",
"Appliquez ce principe pour déterminer la meilleure combinaison possible pour le réseau de neurones, en repartant des différentes configurations testées dans les parties précédentes."
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "7f6eeac1",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "40f04782-02e8-47f6-8f01-195c0b7f882f",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "82eca36d-3c7d-4440-ab03-066762fea747",
"metadata": {},
"source": [
"# Fin du TP !"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

1142
M06_TP01_Solution.ipynb Normal file

File diff suppressed because one or more lines are too long

332
M07_TP01_Exercice.ipynb Normal file
View File

@@ -0,0 +1,332 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "c6c97ebc",
"metadata": {},
"source": [
"# TP n°1 du module 7 : L'apprentissage non supervisé pour le _Machine Learning_\n",
"\n",
"Dans ce TP, nous allons mettre en pratique les principes de l'apprentissage non supervisé.\n",
"\n",
"Objectifs :\n",
"- Passer en revue les principaux algorithmes de clustering\n",
"- Comparer les performances de ces différents algorithmes\n",
"- Comparer avec les performances de la classification supervisée.\n",
"\n",
"La recherche d'itemsets fréquents et de règles d'associaion ne sera pas abordée dans ce TP.\n",
"\n",
"_NB. : Des messages d'alertes sont suceptibles d'apparaître…_"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "3d02d7de",
"metadata": {},
"outputs": [],
"source": [
"# Ajoutez ici les imports de librairies nécessaires\n",
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "925311c6",
"metadata": {},
"source": [
"Même si ce module concerne l'apprentissage non supervisé, nous allons continuer à explorer le jeu de données du Titanic :\n",
"- Cela nous permettra, à la fin, de comparer les clusters obtenus, avec les deux classes réelles obtenus via les labels du jeu de données.\n",
"\n",
"Nous allons donc commencer par charger les données. Pour cela, repartez du csv obtenu à la fin du TP n°1 du module 4 :\n",
"- Construisez, comme pour l'apprentissage supervisé, deux dataframe : un avec les attributs, l'autre avec les labels."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "8660a70c",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "7ab5c627",
"metadata": {},
"source": [
"## 1 - Découverte de KMeans"
]
},
{
"cell_type": "markdown",
"id": "596a7460-2256-40dc-9fcf-d1cbdd4164d2",
"metadata": {},
"source": [
"### Question n°1\n",
"Nous allons commencer par faire un premier clustering avec KMeans.\n",
"- Comme nous connaissons le nombre de clusters à rechercher, créer un modèle avec la classe de scikit-learn, en fixant le nombre de clusters.\n",
"- Appliquez ce clustering aux attributs de _Titanic.csv_\n",
"- Récupérer dans une liste le numéro du cluster prédit pour chaque donnée."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "ad5f4f32",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "23f5200c",
"metadata": {},
"source": [
"### Question n°2\n",
"- Quelle est la classe majoritaire dans le premier cluster ?\n",
"- Dans le deuxième cluster ?\n",
"- Affichez une matrice, qui donne pour chaque classe le nombre de fois où elle apparaît dans chaque cluster.\n",
"- Qu'observez-vous ?"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "35da6202",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "5b356cb5",
"metadata": {},
"source": [
"### Question n°3\n",
"Faites un pairplot des données du Titanic, en colorant chaque donnée en fonction du cluster auquel elle a été affectée.\n",
"- Remarquez-vous des phénomènes intéressants ?"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "32bf66f5",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "20edcaa2",
"metadata": {},
"source": [
"### Question n°4\n",
"Les algorithmes de clustering impliquant des mesures de distances sont très sensibles aux plages de valeurs des différents attributs.\n",
"- Normalisez vos données, et refaites les mêmes étapes que précédemment.\n",
"- Observez-vous une différence ?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "ee230dda",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "69d9c149",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "0b188d1d-94b5-4c11-806f-374a797986ca",
"metadata": {},
"source": [
"#### Observation :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "462ecef1",
"metadata": {},
"source": [
"### Question n°5\n",
"Étudions l'évolution du coefficient de _silhouette_.\n",
"- Pour k variant de 2 à 10, tracez l'évolution de ce coefficient pour un clustering kmeans appliqué au données normalisées.\n",
"- Le nombre de clusters utilisé aux questions précédentes vous semble-t'il pertinent ?"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "3b0c59a0",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "08525d4b",
"metadata": {},
"source": [
"## 2 - Clustering hiérarchique\n",
"\n",
"⚠ Attention : Pour toute la suite du TP, nous travaillerons avec les données normalisées. "
]
},
{
"cell_type": "markdown",
"id": "975de584-bd9e-4837-b443-3a17c49983e8",
"metadata": {},
"source": [
"### Question n°1\n",
"Créez un modèle de clustering hiérarchique (`AgglomerativeClustering`). En utilisant le coefficient de silhouette, comparez le score obtenu pour deux clusters avec celui obtenu par KMeans sur la section précédente."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "6c8c8175",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "6516e52f-c916-4d0a-a4db-87128de828ce",
"metadata": {},
"source": [
"#### Observation :\n",
"`à compléter`"
]
},
{
"cell_type": "markdown",
"id": "7527fa93",
"metadata": {},
"source": [
"### Question n°2\n",
"Représentez graphiquement ce nouveau clustering, à l'aide d'un pairplot.\n",
"- Remarquez-vous des tendances ou des changements intéressants ?"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "6cb2ad2c",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "8305067c",
"metadata": {},
"source": [
"### Question n°3\n",
"Étudiez l'impact du paramètre `linkage` sur les résultats de votre clustering hiérarchique.\n",
"- Pour rappel, ce paramètre désigne la manière dont est calculée la distance entre deux clusters, pour décider lesquels réunir à une itération donnée.\n",
"- Construisez un graphique montrant la valeur du coefficient silhouette en fonction de la méthode utilisée."
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "5e3fa74f",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "34eef8e2",
"metadata": {},
"source": [
"## 3 - Comparaison des différents clustering\n",
"\n",
"Nous allons à présent comparer les résultats obtenus avec les autres algorithmes de clustering proposés par _Scikit-Learn_.\n",
"- Testez ces différents algorithmes, et calculez à chaque fois le coefficient de slihouette obtenu.\n",
"- Pour les algorithmes qui ne demandent pas de préciser le nombre de clusters à construire :\n",
" - Affichez le nombre de clusters déduit par l'algorithme."
]
},
{
"cell_type": "markdown",
"id": "9b1d9bc9-b50f-4c35-91fd-310bf3948e71",
"metadata": {},
"source": [
"Présentez une synthèse de vos résultats sous forme d'un tableau et d'un graphique.\n",
"\n",
"Liste des algorithmes à prendre en compte : `KMeans`, `DBScan`, `Spectral`, `Affinity_Propagation`, `agglomerativeClustering`, `OPTICS`, `BIRCH`, …\n",
"\n",
"⚠Attention : Pour certains algorithmes, vous devrez jouer avec les paramètres à votre disposition pour parvenir à obtenir au moins deux clusters."
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "cd9df865",
"metadata": {},
"outputs": [],
"source": [
"#TODO"
]
},
{
"cell_type": "markdown",
"id": "4fe16763-a151-4516-80cd-8f8ba0069fa3",
"metadata": {},
"source": [
"# Fin du TP !"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}