Dendrogramas
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 18 de 51.
A árvore de abertura do capítulo é um dendrograma. Cada colchete une dois grupos na altura em que eles foram agrupados: quanto mais altas as hastes, mais distantes eles estavam.
Corte com uma linha, e cada ramo que a linha atravessar se torna um grupo. Aqui, 4:
scipy constrói a árvore, desenha-a e a corta com fcluster:
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
Z = linkage(scaled, "ward")
dendrogram(Z, labels=names, leaf_rotation=90, color_threshold=1.2, ax=ax)
ax.axhline(1.2, color="gray", linestyle="--")
groups = fcluster(Z, t=1.2, criterion="distance")
print(groups)Isso imprime um número de grupo por bola, apenas a bola de basquete:
[2 2 2 1 1 1 3 3 3 4]Atravesse as pernas mais longas: os grupos abaixo estão muito distantes.
Desafio
MédioUm guia marinho agrupa 16 baleias e golfinhos por comprimento, peso e profundidade de mergulho. O código inicial dimensiona os dados e lê a altura de corte, cut.
- Construa a árvore de Ward
Ze desenhe-a emax: nomes dos animais girados em 90 graus, com as cores terminando no corte. - Desenhe o corte como uma linha tracejada cinza e, em seguida, exiba o gráfico.
- Imprima o número de grupos.
Para 11 frutas e um corte em 3.5:
Cut at 3.5: 3 groupsO Coddy descreve sua árvore.
Experimente você mesmo
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
# 16 baleias e golfinhos: comprimento do corpo (m), peso (toneladas), mergulho mais profundo (m)
whales = pd.read_csv("whales.csv")
names = list(whales["animal"])
scaled = StandardScaler().fit_transform(whales[["length_m", "weight_t", "dive_m"]])
cut = float(input())
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3) # espaço para os nomes abaixo da árvore
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")
# 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