Dendrogramas
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 18 de 51.
El árbol inicial del capítulo es un dendrograma. Cada corchete une dos grupos a la altura a la que se fusionaron: cuanto más altas son sus ramas, más separados estaban.
Córtalo con una línea, y cada rama que cruce la línea se convierte en un grupo. Aquí, 4:
scipy construye el árbol, lo dibuja y lo corta con 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)Esto imprime un número de grupo por pelota, solo la de baloncesto:
[2 2 2 1 1 1 3 3 3 4]Traza una línea que cruce los lados más largos: los grupos de abajo están muy separados.
Desafío
IntermedioUna guía marina agrupa 16 ballenas y delfines por longitud, peso y profundidad de inmersión. El código inicial los escala y lee la altura de corte, cut.
- Construye el árbol de Ward
Zy dibújalo enax: nombres de los animales girados 90 grados y colores que se detienen en el corte. - Dibuja el corte como una línea gris discontinua y luego muéstralo.
- Imprime el número de grupos.
Para 11 frutas y un corte en 3.5:
Cut at 3.5: 3 groupsCoddy describe tu árbol.
Pruébalo tú mismo
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
# 16 ballenas y delfines: longitud corporal (m), peso (toneladas), inmersión más profunda (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) # espacio para los nombres debajo del árbol
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje no supervisado
1Encontrar grupos
Aprender sin etiquetasMedir la similitudK-Means a manoK-Means en scikit-learnRepaso: miembros del gimnasio7PCA en la práctica
Visualizar 64 dimensionesComponentes como patronesComprimir y reconstruirPCA antes de un modeloRepaso: escáner facial10Proyecto: Explorador de dígitos
Observa los dígitosReduce con PCAAgrupa los dígitosPon nombre a los gruposEncuentra los diferentes2Elegir k
InerciaEl método del codoPuntuaciones de siluetaEscalar antes de agruparRepaso: zonas de entrega3Interpretación de los clústeres
Perfilado de clústeresCentros en unidades realesClústeres frente a etiquetas conocidasCuándo falla K-MeansRepaso: cata de téPractica por tu cuenta: Compilador de Python online