Mesafe ölçümü
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 49/112
- 5 dk
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.0Tü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
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
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.
m = KNeighborsClassifier(n_neighbors=3, metric=____)
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 |