Mesclando passo a passo
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 16 de 51.
Este capítulo cria uma árvore genealógica dos seus dados e, em seguida, divide-a em grupos. Aqui estão dez bolas esportivas, por tamanho e peso:
A árvore cresce de baixo para cima. Comece com cada ponto sozinho, junte os dois grupos mais próximos e repita:
A distância entre dois grupos é a distância entre suas médias. Uma junção, usando listas:
groups = [[2], [7], [15, 19], [33]]
groups[0] = groups[0] + groups[1] # junta as listas
groups.pop(1) # remove [7], agora no grupo 0
print(groups)Isso imprime [[2, 7], [15, 19], [33]]. Mesclagem após mesclagem: isso é agrupamento aglomerativo.
Desafio
MédioAs famílias plantam seus guarda-sóis de praia próximos uns dos outros. Agrupe os 10 guarda-sóis em spots por meio de fusões, até restarem wanted grupos. closest_pair(groups) retorna as posições i, j dos dois grupos mais próximos.
- Comece com cada guarda-sol sozinho, em uma lista de um elemento.
- Enquanto houver mais grupos do que
wanted: imprima a fusão, junte o par, remova o segundo. - Imprima os grupos restantes.
Para outros guarda-sóis e wanted igual a 3:
Merge [33] and [35]
Merge [30] and [33, 35]
Merge [3] and [8]
3 groups: [[3, 8], [30, 33, 35], [70]]Experimente você mesmo
import numpy as np
# Onde estão os 10 guarda-sóis, em metros a partir da torre dos salva-vidas
spots = [2, 9, 11, 31, 45, 46, 69, 74, 92, 96]
# Retorna i, j (i < j): as posições dos dois grupos cujas médias são mais próximas
def closest_pair(groups):
best_i, best_j = 0, 1
best_gap = abs(np.mean(groups[0]) - np.mean(groups[1]))
for i in range(len(groups)):
for j in range(i + 1, len(groups)):
gap = abs(np.mean(groups[i]) - np.mean(groups[j]))
if gap < best_gap:
best_i, best_j, best_gap = i, j, gap
return best_i, best_j
wanted = 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