Medindo a Similaridade
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 2 de 51.
No k-NN, mais próximo significava a menor distância. Para encontrar grupos, você precisa disso para cada par de linhas: uma tabela de distâncias. Quatro amigos avaliaram dois filmes, de 1 a 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))A linha i contém a distância do amigo i em relação a todos. Aqui está table, representada como uma grade:
Ignore a diagonal 0: cada amigo comparado consigo mesmo. O menor número restante indica o par mais parecido; o maior, o mais diferente. Distância pequena, linhas semelhantes.
Desafio
FácilUma juice bar adiciona ao cardápio o novo smoothie do chef, lido pelo programa. Quais dois são tão parecidos que um deles pode sair? Quais dois são mais diferentes, para uma degustação?
- Monte a tabela de distâncias de
menu. - Encontre o par mais parecido e o mais diferente: cada par uma única vez, nunca um smoothie com ele mesmo.
- Imprima os dois, com os nomes na ordem do cardápio e as distâncias com 1 casa decimal.
Para outro cardápio:
Most alike: Lemon Zing and Lime Twist (14.1 g apart)
Most different: Choco Shake and Cucumber Cool (212.6 g apart)Experimente você mesmo
import numpy as np
names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# Uma linha por smoothie, gramas por copo: frutas, verduras, iogurte
menu = np.array([[180, 0, 120],
[90, 110, 60],
[160, 0, 150],
[60, 150, 30],
[200, 20, 40],
[100, 0, 200],
[170, 40, 0]])
# A nova receita do chef entra no cardápio como a última linha
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])
# 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