Menu
CoddyTech

Agrupamentos versus rótulos conhecidos

Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 13 de 51.

Quando os rótulos existem, mas o k-means nunca os viu, confira o que ele encontrou: pd.crosstab conta cada par de cluster e rótulo.

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

Para 150 grãos de café de 3 tipos, agrupados por comprimento e cafeína: uma linha por agrupamento, uma coluna por tipo:

Uma tabela de 3 por 3 de contagens, com os agrupamentos nas linhas e os tipos de café nas colunas: arábica, liberica, robusta. O agrupamento 0 contém 49 grãos de robusta; o agrupamento 1 contém 48 de arábica, 3 de liberica e 1 de robusta; o agrupamento 2 contém 47 de liberica e 2 de arábica

Cada agrupamento é composto principalmente por um tipo; apenas 6 feijões ficaram de fora. E o k-means nunca viu um rótulo.

Clusters não são classes. Uma correspondência próxima significa que as classes diferem nos dados. Uma correspondência ruim é uma descoberta, não um bug.

challenge icon

Desafio

Médio

Os clusters de k-means encontram as espécies de íris? O código inicial padroniza as flores, mantém seus nomes em species, lê k e as agrupa.

  1. Faça uma tabela cruzada dos clusters em relação às espécies.
  2. Para cada espécie, imprima sua maior contagem em um cluster, do total da espécie.
  3. Conte os clusters que contêm uma única espécie.

Para outro jardim e 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

Experimente você mesmo

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

# 150 flores de íris, com os dados padronizados, e o nome da espécie de cada uma, oculto do 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)

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado não supervisionado

Pratique por conta própria: Compilador de Python online