Menu
CoddyTech

Mengukur Kemiripan

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 2 dari 51.

Dalam k-NN, terdekat berarti jaraknya paling kecil. Untuk menemukan kelompok, kamu memerlukannya untuk setiap pasangan baris: sebuah tabel jarak. Empat teman memberi nilai untuk dua film, dari 1 hingga 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))

Baris i menyimpan jarak teman i ke semua orang. Berikut table, yang digambarkan sebagai kisi:

Kisi 4 kali 4 yang menunjukkan jarak antara Ana, Ben, Cy, dan Dee. Diagonalnya berisi 0.0. Dua sel untuk Ana dan Ben, 1.4, disorot sebagai nilai terkecil di luar diagonal; jarak Ana dan Cy paling jauh, yaitu 9.9

Abaikan diagonal 0, karena setiap teman dibandingkan dengan dirinya sendiri. Angka terkecil yang tersisa menunjukkan pasangan yang paling mirip, sedangkan angka terbesar menunjukkan pasangan yang paling berbeda. Jarak kecil berarti baris yang mirip.

challenge icon

Tantangan

Mudah

Sebuah bar jus menambahkan smoothie baru dari koki, yang dibaca oleh program, ke menunya. Pasangan mana yang sangat mirip sehingga salah satunya bisa dihilangkan? Pasangan mana yang paling berbeda untuk dicicipi bersama?

  1. Buat tabel jarak dari menu.
  2. Temukan pasangan yang paling mirip dan paling berbeda: hitung setiap pasangan satu kali, jangan pernah memasangkan smoothie dengan dirinya sendiri.
  3. Cetak keduanya, dengan nama sesuai urutan dalam menu dan jarak hingga 1 angka desimal.

Untuk menu lain:

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

Coba sendiri

import numpy as np

names = ["Berry Blast", "Green Glow", "Mango Lassi", "Kale Kick", "Tropical Sun", "Banana Oat", "Minty Melon"]
# Satu baris untuk setiap smoothie, dalam gram per cangkir: buah, sayuran hijau, 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]])

# Resep baru koki ditambahkan ke menu sebagai baris terakhir
names.append(input())
new = [int(input()), int(input()), int(input())]
menu = np.concatenate([menu, [new]])

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online