Mierzenie podobieństwa
Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 2 z 51.
W k-NN „najbliższy” oznaczał najmniejszą odległość. Aby znaleźć grupy, potrzebujesz jej dla każdej pary wierszy: tabeli odległości. Czterech znajomych oceniło dwa filmy w skali od 1 do 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))Wiersz i zawiera odległości znajomego i od wszystkich. Oto table przedstawiona w formie siatki:
Pomiń przekątną z wartościami 0 — przedstawia ona każdego znajomego w zestawieniu z samym sobą. Najmniejsza pozostała liczba oznacza najbardziej podobną parę, a największa — najbardziej różną. Mała odległość oznacza podobne wiersze.
Wyzwanie
ŁatwyBar z sokami dodaje do menu nowy koktajl szefa kuchni, wczytany przez program. Które dwa koktajle są tak podobne, że można zrezygnować z jednego? Które dwa najbardziej się różnią i warto uwzględnić je w zestawie degustacyjnym?
- Zbuduj tabelę odległości dla
menu. - Znajdź najbardziej podobną i najbardziej różniącą się parę: każdą parę uwzględnij tylko raz, nigdy nie zestawiaj koktajlu z samym sobą.
- Wypisz obie pary, nazwy w kolejności z menu, a odległości zaokrąglij do 1 miejsca po przecinku.
Dla innego menu:
Most alike: Lemon Zing and Lime Twist (14.1 g apart)
Most different: Choco Shake and Cucumber Cool (212.6 g apart)Spróbuj swoich sił
import numpy as np
names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# Jeden wiersz na smoothie, gramy na kubek: owoce, zielone warzywa, jogurt
menu = np.array([[180, 0, 120],
[90, 110, 60],
[160, 0, 150],
[60, 150, 30],
[200, 20, 40],
[100, 0, 200],
[170, 40, 0]])
# Nowy przepis szefa kuchni trafia do menu jako ostatni wiersz
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])
# Napisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nienadzorowane
1Znajdowanie grup
Uczenie się bez etykietMierzenie podobieństwaK-Means krok po krokuK-Means w scikit-learnPodsumowanie: członkowie siłowni4Klasteryzacja hierarchiczna
Łączenie krok po krokuModele aglomeracyjneDendrogramyPodsumowanie: rasy psów7PCA w praktyce
Poznajemy 64 wymiarySkładowe jako wzorceKompresuj i odtwórzPCA przed modelemPodsumowanie: skaner twarzy10Projekt: Odkrywca cyfr
Przyjrzyj się cyfromZmniejsz wymiar za pomocą PCAGrupuj cyfryNazwij grupyZnajdź te nietypowe2Wybór k
InercjaMetoda łokciaWyniki silhouetteSkalowanie przed klasteryzacjąPodsumowanie: strefy dostawPoćwicz samodzielnie: Kompilator Python online