Comment créer et exécuter un modèle d'apprentissage non supervisé de faire des prédictions avec k-means

L'algorithme K-means nécessite un paramètre d'initialisation de l'utilisateur afin de créer une instance pour l'analyse prédictive. Il a besoin de savoir combien de K groupes à utiliser pour effectuer son travail.

Longueur des sépalesSépale LargeurPétale LongueurPétale LargeurClasse cible / Étiquette
5.13.51.40,2Setosa (0)
7.03.24.71.4Versicolor (1)
6.33.36.02.5Virginica (2)

Puisque vous utilisez l'ensemble de données Iris, vous savez déjà qu'il dispose de trois pôles. L'ensemble de données Iris dispose de trois classes de la fleur d'iris (Setosa, versicolor et virginica). En général, lorsque vous créez une tâche d'apprentissage sans surveillance avec un algorithme de clustering, vous ne savez pas combien de grappes de préciser.

Certains algorithmes sont disponibles que d'essayer de déterminer le meilleur nombre de clusters, mais leurs résultats peuvent être douteuse. Une méthode de telles itération d'une gamme de clusters et puis sélectionne un nombre de grappes qui correspond le mieux à ses critères mathématiques. Cette approche nécessite de lourds calculs, peut prendre un certain temps, et peuvent toujours pas produire le meilleur K (nombre de clusters).

La meilleure façon d'obtenir des résultats immédiats est de faire une supposition éclairée sur le nombre de grappes à utiliser - baser votre estimation sur les fonctionnalités présentes dans les données (si l'une ou plusieurs caractéristiques), ou sur une autre connaissance des données que vous pouvez avoir de l'expert de domaine de l'entreprise.

Cette retomber sur des conjectures (conjecture même instruite) constitue une limitation majeure des k-moyennes algorithme.

Pour créer une instance des k-moyennes algorithme et exécuter les données à travers elle, tapez le code suivant dans l'interpréteur.

>>> From KMeans d'importation sklearn.cluster >>> kmeans = KMeans (n_clusters = 3, random_state = 111) >>> kmeans.fit (iris.data)

La première ligne de code importe la bibliothèque KMeans dans la session. La deuxième ligne crée le modèle et la stocke dans une variable nommée kmeans. Le modèle est créé avec le nombre de grappes fixé à 3. La troisième ligne correspond au modèle aux données Iris.




L'ajustement du modèle est la partie centrale de l'algorithme, où il va produire les trois groupes avec l'ensemble de données et de construire une fonction mathématique qui décrit la ligne ou une courbe qui correspond le mieux les données. Pour voir les grappes que l'algorithme produit, tapez le code suivant.

>>> Kmeans.labels_

La sortie devrait ressembler à ceci:

array ([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 0,0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0 , 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 2, 0,2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2,0, 2, 0, 2, 0 , 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2,2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2 , 0])

Ceci est la façon dont l'algorithme K-means étiquettes les données comme appartenant à grappes, sans intervention de l'utilisateur sur les valeurs cibles. Voici la seule chose que K-means savaient ce que vous les avez fournies: le nombre de grappes. Ce résultat montre comment l'algorithme considéré les données, et ce qu'il a appris sur les relations des éléments de données à l'autre - d'où le terme apprentissage non supervisé.

Vous pouvez voir tout de suite que certains des points de données ont été mal étiquetés. Vous savez, à partir de l'ensemble de données Iris, ce que les valeurs cibles devraient être:

  • Les 50 premières observations doivent être étiquetés de la même (comme 1s dans ce cas).

    Cette gamme est connu sous le nom Setosa classe.

  • Observations 51 à 100 devraient être étiquetés de la même (comme des 0 dans ce cas).

    Cette gamme est connu sous le nom Classe versicolor.

  • Observations 101 à 150 devraient être étiquetés de la même (comme 2s dans ce cas).

    Cette gamme est connu sous le nom Classe Virginica.

Il n'a pas d'importance si K-means étiquetés chaque série de 50 avec un 0, 1 ou 2. Tant que chaque série de 50 a la même étiquette, il prédit avec exactitude les résultats. Il est à vous de donner à chaque groupe un nom et de trouver un sens dans chaque grappe.

Si vous exécutez l'algorithme K-means nouveau, il peut produire un nombre tout à fait différente pour chaque ensemble de 50 - mais le sens en serait de même pour chaque ensemble (classe).

Vous pouvez créer un modèle K-means qui peut générer le même résultat à chaque fois en passant le random_state paramètre avec une valeur de départ fixe à la fonction qui crée le modèle. L'algorithme dépend aléatoire pour initialiser les centres de cluster.

Fournir une valeur de départ fixe enlève le caractère aléatoire. Cela dit essentiellement K-means pour sélectionner les mêmes points de données initiales pour initialiser les centres de cluster, chaque fois que vous exécutez l'algorithme. Il est possible d'obtenir un résultat différent en retirant le random_state paramètre de la fonction.


» » » » Comment créer et exécuter un modèle d'apprentissage non supervisé de faire des prédictions avec k-means