Inércia
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 6 de 51.
Este capítulo trata de escolher k. Ao final, você vai escolhê-lo para as entregas de uma padaria e mapear as zonas:
Primeiro, uma pontuação. Inércia soma a distância ao quadrado de cada ponto até seu próprio centro: é pequena quando os pontos ficam próximos de seus centros.
O KMeans mantém isso em inertia_. Para as 180 maçãs:
for k in [1, 2, 3, 4]:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(X)
print(k, round(km.inertia_))Isso imprime:
1 1718
2 752
3 230
4 196Mais centros, raios mais curtos: a inércia sempre diminui à medida que k aumenta. Com um centro por ponto, ela é 0; portanto, o menor valor não é o melhor.
Desafio
FácilUma olaria embala vasos em caixas de alguns tamanhos. Cada vaso fica com o tamanho mais próximo; a inércia mede o quanto eles se encaixam mal. O programa lê budget, o maior desajuste que a olaria aceita.
- Teste k = 1, 2, 3 e assim por diante: ajuste o KMeans a
vasese imprima a inércia de cada k, arredondada. - Pare no primeiro k cuja inércia esteja dentro do orçamento e imprima-o.
Para outra olaria:
k = 1, inertia 15120
k = 2, inertia 4811
k = 3, inertia 1290
Box sizes needed: 3Experimente você mesmo
import numpy as np
from sklearn.cluster import KMeans
# Não altere as linhas abaixo
rng = np.random.default_rng(8)
# Quatro tipos de vaso: altura e largura típicas em cm e quantidade de cada tipo
kinds = [(15, 8, 25), (38, 13, 25), (22, 22, 20), (58, 26, 10)]
parts = []
for h, w, n in kinds:
parts.append(np.column_stack([rng.normal(h, 2.5, n), rng.normal(w, 2, n)]))
# 80 vasos, um por linha: altura e largura em cm
vases = np.round(np.concatenate(parts), 1)
# O desajuste máximo, medido pela inércia, que a olaria aceita
budget = int(input())
# Escreva seu código abaixo
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
1Encontrando Grupos
Aprendendo sem RótulosMedindo a SimilaridadeK-Means à MãoK-Means no scikit-learnRevisão: Frequentadores da Academia4Clustering Hierárquico
Mesclando passo a passoModelos aglomerativosDendrogramasRevisão: raças de cães7PCA na prática
Visualizando 64 dimensõesComponentes como padrõesComprimir e reconstruirPCA antes de um modeloRecapitulação: scanner facial10Projeto: Explorando os Dígitos
Observe os DígitosReduza com PCAAgrupe os DígitosDê Nome aos GruposEncontre os Diferentes2Escolhendo k
InérciaO método do cotoveloPontuações de silhuetaEscale antes de agruparRecapitulando: zonas de entregaPratique por conta própria: Compilador de Python online