Menu
CoddyTech

Benzerliği Ölçme

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 2 / 51.

k-NN'de en yakın, en küçük mesafe demekti. Grupları bulmak için her satır çifti için buna ihtiyacınız var: bir mesafe tablosu. Dört arkadaş iki filmi 1'den 10'a kadar puanladı:

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))

i satırı, i arkadaşının herkese olan mesafesini tutar. İşte ızgara olarak çizilmiş table:

Ana, Ben, Cy ve Dee arasındaki mesafeleri gösteren 4'e 4'lük bir ızgara. Köşegende 0.0 bulunur. Ana ile Ben arasındaki iki hücrede yer alan 1.4, köşegen dışındaki en küçük değer olarak vurgulanmıştır; Ana ile Cy arasındaki mesafe ise 9.9 ile en büyüktür

0 köşegenini, her arkadaşın kendisine karşı olduğu kısmı atlayın. Geriye kalan en küçük sayı, birbirine en çok benzeyen çifti; en büyük sayı ise birbirinden en farklı olan çifti gösterir. Küçük mesafe, benzer satırlar demektir.

challenge icon

Görev

Kolay

Bir meyve suyu barı, şefin program tarafından okunan yeni smoothie’sini menüsüne ekliyor. Hangileri birbirine o kadar benziyor ki birinden vazgeçilebilir? Tadım seçkisi için en farklı olan iki smoothie hangisi?

  1. menu için uzaklık tablosunu oluşturun.
  2. Birbirine en çok benzeyen ve en farklı çifti bulun: her çifti yalnızca bir kez alın, hiçbir smoothie’yi kendisiyle eşleştirmeyin.
  3. Her ikisini de menüdeki sıraya göre adlarıyla ve uzaklıkları 1 ondalık basamakla yazdırın.

Başka bir menü için:

Most alike: Lemon Zing and Lime Twist (14.1 g apart)
Most different: Choco Shake and Cucumber Cool (212.6 g apart)

Kendin dene

import numpy as np

names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# Her smoothie için bir satır, bardak başına gram cinsinden: meyve, yeşillik, yoğurt
menu = np.array([[180, 0, 120],
                 [90, 110, 60],
                 [160, 0, 150],
                 [60, 150, 30],
                 [200, 20, 40],
                 [100, 0, 200],
                 [170, 40, 0]])

# Şefin yeni tarifi menüye son satır olarak eklenir
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi