Menu
CoddyTech

Skalowanie min–max

Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 48 z 64.

Skalowanie min-max zapewnia każdej cesze równy udział: w każdej kolumnie najmniejsza wartość staje się równa 0, największa — 1, a pozostałe mieszczą się między nimi.

Dodaj osobę w wieku 40 lat, zarabiającą 80 000 $, a następnie przeskaluj wszystkie cztery wartości:

Wiek i dochody czterech klientów w tabeli, strzałka, a następnie ta sama tabela po przeskalowaniu: w każdej kolumnie najmniejsza wartość zmieniła się na 0.00, a największa na 1.00; pozostałe wartości są pomiędzy nimi, zacieniowane ciemniej

Operacje z użyciem broadcastingu wykonują to w jednym wierszu, korzystając z najmniejszej wartości i zakresu każdej kolumny:

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)

Teraz wiek też ma znaczenie. Najbliższym sąsiadem klienta 0 nie jest już 61-latek:

Przeskalowani klienci jako kropki na kwadracie od 0 do 1, z liniami poprowadzonymi od klienta 0: 26-latek jest najbliżej, w odległości 0.11, 61-latek jest w odległości 1.00, a osoba zarabiająca $80,000 w odległości 1.08

Jedna skrajna wartość staje się równa 1 i ściska pozostałe w pobliżu 0, dlatego skalowanie min-max sprawdza się w kolumnach bez wartości odstających.

challenge icon

Wyzwanie

Średni

Palarnia dopasowuje kawy, które parzą się podobnie. Każdy wiersz beans to kawa: temperatura wody (C), czas parzenia (s) i zawartość kofeiny (mg). Program odczytuje pozycje i i j; funkcja startowa distance(a, b) mierzy odległość między dwiema próbkami.

  1. Przeskaluj beans metodą min-max.
  2. Wypisz Every column from 0 to 1:, a następnie przeskalowaną tablicę z dokładnością do 2 miejsc po przecinku.
  3. Wypisz odległość między nimi przed skalowaniem i po nim, jak poniżej.

Dla trzech innych kaw, pozycje 0 i 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

Spróbuj swoich sił

import numpy as np


# Zwraca odległość między dwiema próbkami (z Why Scale Features)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# Jeden wiersz na każdą kawę: temperatura wody w C, czas parzenia w sekundach, zawartość kofeiny w 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())

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Statystyka w uczeniu maszynowym

Poćwicz samodzielnie: Kompilator Python online