<jupyter_start><jupyter_text>Hands on Clustering  Import<jupyter_code>#Data Manipulation Librairies
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt<jupyter_output><empty_output><jupyter_text>Loading data Les URLS correspondent aux URL d'exercice publique sur GitHub permettant de telecharger directement la data depuis GitHub. Si une erreur arrive, veuillez contacter l'adresse mail en précisant de quel exercice il sagit : <EMAIL><jupyter_code>df_iris = pd.read_csv(
    "https://raw.githubusercontent.com/AGuyNextDoor/AProfNextDoor/main/Exercises/Hands%20on%20Clustering/iris_data_unsupervised.csv",
    sep=',')<jupyter_output><empty_output><jupyter_text>Data Exploration Faire une exploration rapide de votre donnée.Le dataset est composée de 4 variables, décrivant des fleurs observées.Malheuresement.. Nous ne connaissons pas la race de ces fleures! Comment les regrouper?Le but de l'exercice est d'arriver a classer les fleures grace a des méthodes de clustering non-supervisé.  PCA Utilisez la méthode de réduction de dimension [PCA](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html), pour pouvoir visualiser les données sur un graph en deux dimensions.Il est conseillé, de transformer votre donnée a travers un [StandardScaler](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html) avant le PCA.  Unsupervised Models  K-Means Utilisez le modèle de clustering [kmeans](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html?highlight=kmeanssklearn.cluster.KMeans) pour regrouper votre donnée. En utilisant le score de silhouette de scikit-learn, choissisez le nombre de cluster le plus approprié.Il faut reussir a générer le graphe 2 dimension du PCA, en rajoutant une couleur pour chaque cluster afin de visualiser votre clustering. Voici un exemple qui permet d'associer une couleur par label sur un graph : https://stackoverflow.com/questions/12487060/matplotlib-color-according-to-class-labels  HDBSCAN Utilisez le modèle de clustering [hdbscan](https://hdbscan.readthedocs.io/en/latest/basic_hdbscan.htmlthe-simple-case) pour regrouper votre donnée.                                           Il n'y a pas besoin particulierement d'utiliser de parametres pour HDBSCAN pour cet exemple la, mais n'hesitez pas a lire la documentation!Il faut reussir a générer le graphe 2 dimension du PCA, en rajoutant une couleur pour chaque cluster trouvé par hdbscan, afin de visualiser votre clustering.<jupyter_code>!pip install hdbscan
import hdbscan<jupyter_output><empty_output><jupyter_text>BONUS : Essayez de génerer l'arbre de décision de votre algorithme HDBSCAN grâce a la méthode `condensed_tree_`!  Comparing With Real Labels Le lien plus bas vous donne accès aux labels de votre donnée non-supervisé.Vous pouvez maintenant utiliser les vrai classes sur votre graphe de PCA et les comparer a vos clusters de KMeans et de HDSCAN !Cela vous permettra de comparer la performance de vos algorithmes de clustering non-supervisé<jupyter_code>df_iris_labels = pd.read_csv("https://raw.githubusercontent.com/AGuyNextDoor/AProfNextDoor/main/Exercises/Hands%20on%20Clustering/iris_labels_unsupervised.csv")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.06457564575645756, 'fraction_numerical': 0.005842558425584256, 'mean_word_length': 5.6387755102040815, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 18, 'https://': 7, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '593437', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 1069, 'n_tokens_neox': 1020, 'n_words': 329, 'path': 'Exercises/Hands on Clustering/Hands_on_Clustering.ipynb', 'repo_name': 'AGuyNextDoor/AProfNextDoor', 'size': '3275'}