Menu
CoddyTech

Clústeres frente a etiquetas conocidas

Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 13 de 51.

Cuando hay etiquetas, pero k-means nunca las vio, comprueba qué encontró: pd.crosstab cuenta cada par de clúster y etiqueta.

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

Para 150 granos de café de 3 tipos, agrupados según su longitud y contenido de cafeína: una fila por grupo y una columna por tipo:

Tabla de recuentos de 3 por 3, con los grupos en las filas y los tipos de café en las columnas: arábica, liberica, robusta. El grupo 0 contiene 49 granos de robusta; el grupo 1 contiene 48 granos de arábica, 3 de liberica y 1 de robusta; el grupo 2 contiene 47 granos de liberica y 2 de arábica

Cada grupo es mayormente de un tipo; solo 6 frijoles se desviaron. Y k-means nunca vio una etiqueta.

Sin embargo, los grupos no son clases. Una coincidencia cercana significa que las clases difieren en los datos. Una coincidencia deficiente es un hallazgo, no un error.

challenge icon

Desafío

Intermedio

¿Los clústeres de k-means encuentran las especies de iris? El código inicial escala las flores, guarda sus nombres en species, lee k y las agrupa.

  1. Crea una tabla cruzada de los clústeres y las especies.
  2. Para cada especie, imprime su mayor recuento en un clúster, de un total determinado.
  3. Cuenta los clústeres que contienen una sola especie.

Para otro jardín y 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

Pruébalo tú mismo

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

# 150 flores de iris, escaladas, y el nombre de la especie de cada una, oculto para 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)

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje no supervisado

Practica por tu cuenta: Compilador de Python online