Menu
CoddyTech

Skala Min-Maks

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

Penskalaan min-maks memberi setiap fitur kesempatan yang adil: di setiap kolom, nilai terkecil menjadi 0, nilai terbesar menjadi 1, dan nilai lainnya berada di antaranya.

Tambahkan seseorang berusia 40 tahun dengan penghasilan $80,000, lalu skalakan keempatnya:

Usia dan penghasilan empat pelanggan dalam sebuah tabel, sebuah panah, lalu tabel yang sama setelah diskalakan: di setiap kolom, nilai terkecil menjadi 0.00 dan nilai terbesar 1.00, diarsir lebih gelap, sedangkan nilai lainnya berada di antaranya

Broadcasting melakukannya dalam satu baris, dengan nilai terkecil dan rentang masing-masing kolom:

X = np.array([[25, 52000],
              [61, 53000],
              [26, 55000],
              [40, 80000]])
lows = X.min(axis=0)
highs = X.max(axis=0)
scaled = (X - lows) / (highs - lows)

Sekarang usia juga ikut dihitung. Tetangga terdekat pelanggan 0 bukan lagi yang berusia 61 tahun:

Pelanggan yang telah diskalakan sebagai titik-titik pada persegi dari 0 hingga 1, dengan garis dari pelanggan 0: pelanggan berusia 26 tahun paling dekat dengan jarak 0.11, pelanggan berusia 61 tahun berjarak 1.00, pelanggan berpenghasilan $80,000 berjarak 1.08

Satu nilai ekstrem menjadi 1 dan membuat nilai lainnya mendekati 0, sehingga min-max cocok untuk kolom tanpa pencilan.

challenge icon

Tantangan

Sedang

Seorang peracik kopi mencocokkan kopi yang menghasilkan seduhan serupa. Setiap baris beans adalah kopi: suhu air (C), waktu seduh (s), dan kafein (mg). Program membaca posisi i dan j; fungsi awal distance(a, b) mengukur jarak antara dua sampel.

  1. Skalakan beans dengan min-maks.
  2. Cetak Every column from 0 to 1:, lalu tabel yang sudah diskalakan dengan 2 angka desimal.
  3. Cetak jarak keduanya sebelum dan sesudah penskalaan, seperti di bawah ini.

Untuk tiga kopi lainnya, posisi 0 dan 1:

Every column from 0 to 1:
[[1.   1.   0.67]
 [0.5  0.5  0.  ]
 [0.   0.   1.  ]]
Coffees 0 and 1: 63.28 apart before scaling, 0.97 after

Coba sendiri

import numpy as np


# Mengembalikan jarak antara dua sampel (dari Why Scale Features)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# Satu baris untuk setiap kopi: suhu air dalam C, waktu penyeduhan dalam detik, kafein dalam mg
beans = np.array([[88, 120, 60],
                  [96, 300, 30],
                  [86, 90, 70],
                  [94, 240, 120],
                  [90, 180, 90],
                  [84, 60, 50]])
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