Medir la similitud
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 2 de 51.
En k-NN, «más cercano» significaba la distancia más pequeña. Para encontrar grupos, necesitas calcularla para cada par de filas: una tabla de distancias. Cuatro amigos puntuaron dos películas, del 1 al 10:
ratings = np.array([[9, 2], [8, 3], [2, 9], [3, 7]]) # Ana, Ben, Cy, Dee
n = len(ratings)
table = np.zeros((n, n))
for i in range(n):
table[i] = np.sqrt(((ratings - ratings[i]) ** 2).sum(axis=1))La fila i contiene la distancia de la persona amiga i a todas las demás. Aquí está table, representada como una cuadrícula:
Omite la diagonal de 0, que compara a cada amigo consigo mismo. El número más pequeño que queda corresponde al par más parecido; el más grande, al más diferente. Distancia pequeña, filas similares.
Desafío
FácilUna barra de jugos añade a su menú el nuevo batido del chef, leído por el programa. ¿Cuáles dos se parecen tanto que se podría quitar uno? ¿Cuáles dos son más diferentes, para una degustación?
- Construye la tabla de distancias de
menu. - Encuentra el par más parecido y el más diferente: cada par una sola vez, nunca un batido consigo mismo.
- Imprime ambos pares, con los nombres en el orden del menú y las distancias con 1 decimal.
Para otro menú:
Most alike: Lemon Zing and Lime Twist (14.1 g apart)
Most different: Choco Shake and Cucumber Cool (212.6 g apart)Pruébalo tú mismo
import numpy as np
names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# Una fila por batido, gramos por taza: fruta, verduras de hoja verde, yogur
menu = np.array([[180, 0, 120],
[90, 110, 60],
[160, 0, 150],
[60, 150, 30],
[200, 20, 40],
[100, 0, 200],
[170, 40, 0]])
# La nueva receta del chef se añade al menú como última fila
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])
# 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