Menu
CoddyTech

Mengapa Fitur Perlu Diskalakan

Termasuk bagian Statistik untuk ML dalam perjalanan Machine Learning di Coddy. Pelajaran 47 dari 64.

Pelanggan mana yang paling mirip dengan pelanggan baru? Banyak model mengukur jarak antara sampel: kuadratkan selisih setiap fitur, jumlahkan, lalu ambil akar kuadratnya.

Orang berusia 25 tahun dengan penghasilan $52,000 dibandingkan dengan orang berusia 61 tahun dengan penghasilan $53,000:

Dua batang yang menunjukkan kontribusi setiap fitur terhadap jarak antara kedua pelanggan: usia, selisih 36 tahun, menambah 1,296, irisan yang terlalu tipis untuk dilihat; penghasilan, selisih $1,000, menambah 1,000,000, sebuah batang panjang

Untuk seluruh tabel, axis=1 menjumlahkan kuadrat setiap baris dan .argmin() menemukan baris terdekat:

a = np.array([25, 52000])  # usia, pendapatan
X = np.array([[61, 53000],   # orang berusia 61 tahun
              [26, 55000]])  # orang berusia 26 tahun dengan penghasilan $55,000
dists = np.sqrt(((X - a) ** 2).sum(axis=1))
print(np.round(dists, 2))
print(dists.argmin())

Ini mencetak:

[1000.65 3000.  ]
0

Orang berusia 61 tahun paling dekat: dolar memiliki angka yang lebih besar, jadi $1,000 lebih besar nilainya daripada 36 tahun. Tanpa penskalaan, satuan terbesar yang menentukan.

Bab ini memberi setiap fitur kesempatan yang sama untuk menyampaikan pendapat.

challenge icon

Tantangan

Sedang

Sebuah toko membandingkan mesin cuci berdasarkan harga ($), energi (kWh per tahun), dan air (liter per pencucian), yang disebut dalam features. Program membaca posisi dua mesin, i dan j. Cetak:

  1. Squared gaps: selisih setiap fitur yang dikuadratkan.
  2. Distance: dibulatkan menjadi 2 angka desimal.
  3. Dominant feature: nama fitur dengan selisih kuadrat terbesar.

Untuk dua mesin lainnya:

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

Coba sendiri

import numpy as np

features = ["price", "energy", "water"]
# Satu baris untuk setiap mesin cuci: harga dalam dolar, energi dalam kWh per tahun, air dalam liter per sekali cuci
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())

# Tulis kodemu di bawah ini
quiz iconUji dirimu

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

Semua pelajaran di Statistik untuk ML

Latihan sendiri: Compiler Python online