CodeBlanks Logo Icon CodeBlanks

Mesafe ölçümü

KNN, örnekler arası mesafeyi Öklid veya Manhattan ile ölçer.

Öklid mesafesi

KNN'in varsayılan mesafesi Öklid mesafesidir: farkların karelerinin toplamının karekökü, yani iki nokta arasındaki düz çizgi uzunluğu.

a = np.array([1, 2])
b = np.array([4, 6])
print(np.sqrt(((a - b) ** 2).sum()))   # 5.0
print(np.linalg.norm(a - b))           # 5.0

Tüm özellikler toplama aynı ağırlıkla girer; bu yüzden birimleri farklı özellikler önce ölçeklenmelidir.

Manhattan ve metric

Manhattan mesafesi farkların mutlak değerlerinin toplamıdır; şehir bloklarında yürümek gibi. KNN'de metric parametresiyle seçilir:

print(np.abs(a - b).sum())   # 7  Manhattan
m = KNeighborsClassifier(n_neighbors=3, metric="manhattan")

Aykırı değerli ya da çok boyutlu verilerde Manhattan bazen daha iyi sonuç verir; hangisinin uygun olduğu doğrulamayla seçilir.

Uygulama Mesafeleri hesapla

q sorgu noktasının X'teki her noktaya Öklid mesafesini yayınlama ile hesapla (np.sqrt(((X - q) ** 2).sum(axis=1))) ve yazdır. Ardından en yakın noktanın indeksini argmin ile yazdır.

Başlangıç kodu

model.py
import numpy as np

X = np.array([[0, 0], [3, 4], [1, 1], [6, 8]])
q = np.array([1, 0])

# buraya yaz

Örnek çözüm

model.py
import numpy as np

X = np.array([[0, 0], [3, 4], [1, 1], [6, 8]])
q = np.array([1, 0])

d = np.sqrt(((X - q) ** 2).sum(axis=1))
print(d)
print(d.argmin())

Beklenen çıktı

[1.         4.47213595 1.         9.43398113]
0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 (0, 0) ile (6, 8) arasındaki Öklid mesafesi kaçtır?

  • 14
  • 48
  • 100
  • 10 Doğru cevap

Açıklama: ��(6² + 8²) = √100 = 10.

2 Manhattan mesafesini kullan.

Soru
m = KNeighborsClassifier(n_neighbors=3, metric=____)
Cevap
m = KNeighborsClassifier(n_neighbors=3, metric="manhattan")

Açıklama: Varsayılan metrik minkowski (p=2), yani Öklid'dir.

3 Mesafeleri formüllerle eşleştir.

Kavram Anlamı
Öklid √Σ(a-b)²
Manhattan Σ|a-b|
np.linalg.norm(a-b) Öklid uzunluğu
metric= KNN mesafe seçimi

Başlangıç bölümündeki tüm dersler