Menu
CoddyTech

Özellikleri Neden Ölçeklendirmeliyiz

Coddy'nin Machine Learning Journey'sinin Makine Öğrenimi için İstatistik bölümünün bir parçası. Ders 47 / 64.

Hangi müşteri yeni bir müşteriye en çok benzer? Birçok model örnekler arasındaki mesafeyi ölçer: her özelliğin farkının karesini alır, bunları toplar ve karekökünü alır.

61 yaşında ve 53.000 $ kazanan birine karşılık 52.000 $ kazanan 25 yaşında biri:

İki müşteri arasındaki mesafeye her özelliğin ne kadar katkıda bulunduğunu gösteren iki çubuk: yaş, 36 yıllık fark, 1.296 ekler; görülemeyecek kadar ince bir çizgi; gelir, 1.000 $ fark, 1.000.000 ekler; uzun bir çubuk

Tüm bir tablo için, axis=1 her satırın karelerini toplar ve .argmin() en yakın satırı bulur:

a = np.array([25, 52000])  # yaş, gelir
X = np.array([[61, 53000],   # 61 yaşındaki kişi
              [26, 55000]])  # $55,000 kazanan 26 yaşındaki kişi
dists = np.sqrt(((X - a) ** 2).sum(axis=1))
print(np.round(dists, 2))
print(dists.argmin())

Bu yazdırır:

[1000.65 3000.  ]
0

61 yaşındaki en yakın olandır: dolar daha büyük sayılarla ifade edilir, bu nedenle 1.000 $ 36 yıldan ağır basar. Ölçeklendirilmediğinde, en büyük birimler belirleyici olur.

Bu bölüm, her özelliğin eşit söz hakkına sahip olmasını sağlar.

challenge icon

Görev

Orta

Bir mağaza çamaşır makinelerini features içinde adlandırılan fiyat ($), enerji (yılda kWh) ve su (yıkama başına litre) ölçütlerine göre karşılaştırıyor. Program iki makine konumunu, i ve j'yi okur. Şunları yazdırın:

  1. Squared gaps: her ölçütün farkının karesi.
  2. Distance: 2 ondalık basamağa yuvarlanmış değer.
  3. Dominant feature: karesi alınmış farkı en büyük olan ölçütün adı.

Diğer iki makine için:

Squared gaps: [2500 6400    1]
Distance: 94.35
Dominant feature: energy

Kendin dene

import numpy as np

features = ["price", "energy", "water"]
# Her çamaşır makinesi için bir satır: fiyat dolar cinsinden, enerji yıllık kWh cinsinden, su yıkama başına litre cinsinden
machines = np.array([[499, 160, 48],
                     [349, 210, 55],
                     [899, 120, 42],
                     [529, 250, 50],
                     [279, 230, 60],
                     [749, 140, 45]])
i = int(input())
j = int(input())

# 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.

Makine Öğrenimi için İstatistik bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi