Menu
CoddyTech

Clusters et étiquettes connues

Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 13 sur 51.

Lorsque des étiquettes existent, mais que k-means ne les a jamais vues, vérifiez ce qu’il a trouvé : pd.crosstab compte chaque paire de cluster et d’étiquette.

labels = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(X)
print(pd.crosstab(labels, kind))

Pour 150 grains de café de 3 variétés, regroupés selon la longueur et la teneur en caféine : une ligne par groupe, une colonne par variété :

Un tableau de 3 sur 3 des effectifs, avec les groupes en lignes et les variétés de café en colonnes : arabica, liberica, robusta. Le groupe 0 contient 49 grains de robusta ; le groupe 1 contient 48 grains d’arabica, 3 de liberica et 1 de robusta ; le groupe 2 contient 47 grains de liberica et 2 d’arabica

Chaque groupe est principalement composé d’un seul type ; seuls 6 haricots se sont égarés. Et k-means n’a jamais vu d’étiquette.

Les grappes ne sont toutefois pas des classes. Une correspondance proche signifie que les classes diffèrent dans les données. Une mauvaise correspondance est un constat, pas un bogue.

challenge icon

Défi

Moyen

Les clusters k-means retrouvent-ils les espèces d’iris ? Le code de départ met les fleurs à l’échelle, conserve leurs noms dans species, lit k et les regroupe en clusters.

  1. Établissez un tableau croisé des clusters et des espèces.
  2. Pour chaque espèce, affichez son effectif le plus élevé dans un cluster, sur son effectif total.
  3. Comptez les clusters qui ne contiennent qu’une seule espèce.

Pour un autre jardin et k = 3 :

setosa: 48 of 50 share a cluster
versicolor: 41 of 50 share a cluster
virginica: 33 of 50 share a cluster
Clusters with one species: 0 of 3

Essayez vous-même

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 150 fleurs d’iris, dont les données sont mises à l’échelle, et le nom de l’espèce de chacune, caché à k-means
iris = load_iris()
X = StandardScaler().fit_transform(iris.data)
species = iris.target_names[iris.target]

k = int(input())
labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Apprentissage non supervisé

Entraînez-vous par vous-même : Compilateur Python en ligne