K-means

Fonctions :

  • KMeans()

    La fonction KMeans() de sklearn.cluster est utilisée pour effectuer un clustering (ou partitionnement) de données en un nombre k de clusters distincts. Le K-means est un algorithme non supervisé qui partitionne les données en fonction de leur proximité par rapport aux centres des clusters. L'algorithme minimise la somme des distances carrées entre les points de données et les centres des clusters. Chaque point est assigné au cluster dont le centre est le plus proche, et les centres sont recalculés de manière itérative jusqu'à la convergence.

    Importation :

    from sklearn.cluster import KMeans

    Attributs :

    Paramètre
    Description
    n_clusters Le nombre de clusters à former. Par défaut, c'est 8.
    init La méthode pour initialiser les centres des clusters. Peut être 'k-means++' (par défaut) ou un tableau de centres de clusters.
    n_init Le nombre de fois que l'algorithme est exécuté avec des centres de départ différents. Par défaut, c'est 10.
    max_iter Le nombre maximal d'itérations à effectuer pour trouver les clusters. Par défaut, c'est 300.
    tol Le seuil de tolérance sur la convergence. Si la différence entre l'ancienne et la nouvelle valeur du coût est inférieure à ce seuil, l'algorithme s'arrête.
    random_state Contrôle l'aléa de l'initialisation des centres des clusters. Si None, l'initialisation est aléatoire.
    algorithm Spécifie l'algorithme à utiliser pour effectuer le KMeans. Peut être 'auto', 'full', ou 'elkan'. Par défaut, c'est 'auto'.

    Exemple de code :

    # Importation de KMeans
    from sklearn.cluster import KMeans
    import numpy as np
    
    # Génération de données aléatoires
    X = np.random.rand(100, 2)  # 100 points en 2 dimensions
    
    # Initialisation du modèle KMeans avec 3 clusters
    kmeans = KMeans(n_clusters=3)
    
    # Entraînement du modèle sur les données
    kmeans.fit(X)
    
    # Affichage des centres des clusters
    print("Centres des clusters :")
    print(kmeans.cluster_centers_)
    
    # Affichage des labels de chaque point (cluster attribué)
    print("Labels des points :")
    print(kmeans.labels_)
    
    # Prédiction du cluster pour de nouvelles données
    new_data = np.random.rand(5, 2)  # 5 nouveaux points
    predictions = kmeans.predict(new_data)
    print("Clusters prédits pour les nouvelles données :")
    print(predictions)

    Explication du code :

    from sklearn.cluster import KMeans importe la classe KMeans du module sklearn.cluster, utilisée pour effectuer une classification non supervisée par regroupement (clustering).
    
    import numpy as np importe la bibliothèque NumPy, renommée ici en np, utilisée pour le calcul scientifique et la génération de tableaux numériques.
    
    
    Génération de données aléatoires
    X = np.random.rand(100, 2) génère un tableau de 100 points aléatoires dans un espace à 2 dimensions (valeurs comprises entre 0 et 1). Ces points serviront à former les groupes (ou clusters).
    Initialisation du modèle KMeans
    kmeans = KMeans(n_clusters=3) crée un modèle KMeans qui va regrouper les données en 3 clusters. Le nombre de groupes à former est ici défini manuellement.
    Entraînement du modèle
    kmeans.fit(X) applique l’algorithme de KMeans aux données X. Le modèle va : répartir aléatoirement les centres initiaux des clusters, attribuer chaque point au cluster le plus proche (selon la distance euclidienne), recalculer les centres des clusters, répéter jusqu’à convergence.
    Affichage des centres des clusters
    print(kmeans.cluster_centers_) affiche les coordonnées des centroïdes finaux de chaque cluster, après convergence.
    Affichage des labels des points
    print(kmeans.labels_) affiche un tableau indiquant pour chaque point de X à quel cluster (0, 1 ou 2) il a été attribué par le modèle.
    Prédiction de clusters pour de nouvelles données
    new_data = np.random.rand(5, 2) génère 5 nouveaux points aléatoires en 2 dimensions. predictions = kmeans.predict(new_data) prédit à quel cluster (parmi les 3 précédemment définis) chaque nouveau point appartient, en fonction de sa distance aux centroïdes appris. print(predictions) affiche l’index du cluster (0, 1 ou 2) attribué à chaque nouveau point.