Misurare la similarità
Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 2 di 51.
In k-NN, «più vicino» significava la distanza minore. Per trovare gruppi, ti serve per ogni coppia di righe: una tabella delle distanze. Quattro amici hanno valutato due film, da 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))La riga i contiene la distanza dell'amico i da tutti. Ecco table, rappresentata come una griglia:
Salta la diagonale degli 0, cioè ogni amico confrontato con sé stesso. Il numero più piccolo rimasto indica la coppia più simile, quello più grande la più diversa. Distanza ridotta, righe simili.
Sfida
FacileUn juice bar aggiunge al menu il nuovo frullato dello chef, letto dal programma. Quali due sono così simili che se ne può eliminare uno? Quali due sono i più diversi, per una degustazione?
- Costruisci la tabella delle distanze di
menu. - Trova la coppia più simile e quella più diversa: ogni coppia una sola volta, mai un frullato con sé stesso.
- Stampa entrambe, con i nomi nell'ordine del menu e le distanze con 1 cifra decimale.
Per un altro menu:
Most alike: Lemon Zing and Lime Twist (14.1 g apart)
Most different: Choco Shake and Cucumber Cool (212.6 g apart)Provalo tu
import numpy as np
names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# Una riga per ogni frullato, grammi per tazza: frutta, verdure a foglia verde, yogurt
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 nuova ricetta dello chef viene aggiunta al menu come ultima riga
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])
# Scrivi il tuo codice qui sotto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento non supervisionato
1Trovare gruppi
Apprendimento senza etichetteMisurare la similaritàK-Means a manoK-Means in scikit-learnRiepilogo: iscritti alla palestra4Clustering gerarchico
Unire passo dopo passoModelli agglomerativiDendrogrammiRiepilogo: razze canine7PCA nella pratica
Vedere 64 dimensioniComponenti come schemiComprimere e ricostruirePCA prima di un modelloRiepilogo: scanner facciale10Progetto: Esplorare le cifre
Osserva le cifreRiduci con PCARaggruppa le cifreDai un nome ai gruppiTrova gli elementi insoliti2Scelta di k
InerziaIl metodo del gomitoPunteggi silhouetteScala prima del clusteringRiepilogo: zone di consegnaEsercitati da solo: Compilatore Python online