Menu
CoddyTech

Dê Nome aos Grupos

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

Os clusters vêm com números, não nomes. Agora você pode usar os rótulos: uma tabela cruzada conta quais dígitos caíram em cada cluster, como estes 1s, 7s e 9s em 3 clusters:

Uma tabela de contagens de 3 por 3, com os clusters nas linhas e os dígitos 1, 7 e 9 nas colunas. A maior contagem de cada linha está em uma caixa: o cluster 0 contém 166 noves, o cluster 1 contém 176 setes, o cluster 2 contém 154 uns

Nomeie cada grupo com seu dígito mais comum. As varreduras desse dígito contam como identificadas corretamente:

ct = pd.crosstab(km.labels_, y)
names = ct.idxmax(axis=1)      # a coluna com o maior valor de cada linha
right = ct.max(axis=1).sum()
print(names.tolist(), right)

Isso imprime [9, 7, 1] 496: 496 das 541 varreduras foram nomeadas à direita, por grupos encontrados sem um único rótulo.

challenge icon

Desafio

Médio

Dê nomes aos seus 10 clusters. O código inicial traz km, ajustado sem rótulos; agora você pode usar os dígitos em y.

  1. Faça uma tabulação cruzada dos clusters com y e dê a cada cluster o nome do dígito mais comum nele.
  2. Na ordem dos nomes, imprima as digitalizações de cada cluster nomeadas corretamente, seu tamanho e sua proporção de acertos, como porcentagem inteira.
  3. Imprima o total de digitalizações nomeadas corretamente e a porcentagem com 1 casa decimal.

Para 5 clusters:

Cluster named 0: 175 of 177 scans (99%)
Cluster named 2: 160 of 367 scans (44%)
Cluster named 3: 168 of 531 scans (32%)
Cluster named 6: 179 of 359 scans (50%)
Cluster named 7: 176 of 363 scans (48%)
Named right without labels: 858 of 1797 scans (47.7%)

Qual dos seus clusters é o mais fraco e o que há nele?

Experimente você mesmo

import pandas as pd
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# De Observe os Dígitos: 1,797 imagens de 64 pixels, intensidade da tinta de 0 a 16
digits = load_digits()
X = digits.data
y = digits.target

# De Reduza com PCA: 80% da variância em 13 números por imagem
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# De Agrupe os Dígitos: 10 grupos, encontrados sem rótulos
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

# 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