O método do cotovelo
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 7 de 51.
Represente graficamente a inércia em função de k. Enquanto cada novo centro divide um grupo real, a inércia despenca; depois, ela se estabiliza. A curva, o cotovelo, indica um bom valor de k:
Uma regra prática: pare quando mais um centro reduzir a inércia em menos de um quarto. As reduções das maçãs: 56%, depois 69% e, então, apenas 15%. Portanto, k = 3:
ax.plot(ks, inertias, marker="o")
ax.axvline(3, linestyle="--")Uma curva suave sem nenhuma dobra significa que não há grupos claros. A próxima lição traz um segundo avaliador.
Desafio
FácilUm aplicativo de plantas organiza plantas domésticas em planos de cuidado de acordo com a necessidade de luz e água. O código inicial contém as inércias para k from 1 to 8, um gráfico e cutoff.
- Começando em k = 1 e avançando, pare quando o próximo k reduzir a inércia em menos de
cutoff. Imprima esse k. - Faça um gráfico da inércia em função de k com pontos, uma linha vertical tracejada no seu k e exiba o gráfico.
Para outro aplicativo, cutoff 0.25:
Care plans: 3Em seguida, Coddy descreve seu gráfico.
Experimente você mesmo
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Não altere as linhas abaixo
rng = np.random.default_rng(17)
# Quatro tipos de planta: necessidade típica de luz e água e quantidade de cada tipo
kinds = [(8.5, 2, 35), (2.5, 7.5, 30), (5, 5, 30), (8, 8, 25)]
parts = []
for l, w, n in kinds:
parts.append(np.column_stack([rng.normal(l, 0.8, n), rng.normal(w, 0.8, n)]))
# 120 plantas de interior, uma por linha: necessidade de luz e água, com notas de 1 a 10
plants = np.clip(np.round(np.concatenate(parts), 1), 1, 10)
# Inércia para k = 1 a 8, de Inertia
ks = list(range(1, 9))
inertias = []
for k in ks:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(plants)
inertias.append(km.inertia_)
cutoff = float(input())
fig, ax = plt.subplots()
ax.set_title("Elbow: Care Plans")
ax.set_xlabel("k")
ax.set_ylabel("Inertia")
# 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