Menu
CoddyTech

Scalatura Min-Max

Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 48 di 64.

La scalatura min-max dà a ogni caratteristica la stessa importanza: in ogni colonna, il valore più piccolo diventa 0, il più grande 1 e gli altri si collocano tra questi due.

Aggiungi una persona di 40 anni che guadagna $80,000, poi ridimensiona tutti e quattro:

Età e redditi di quattro clienti in una tabella, una freccia, poi la stessa tabella ridimensionata: in ogni colonna il valore più piccolo è diventato 0.00 e il più grande 1.00, con una tonalità più scura, mentre gli altri sono intermedi

Il broadcasting lo fa in una riga, con il valore minimo e l'intervallo di ciascuna colonna:

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)

Ora conta anche l'età. Il vicino più prossimo del cliente 0 non è più il sessantunenne:

I clienti ridimensionati come punti su un quadrato da 0 a 1, con linee dal cliente 0: il ventiseienne è il più vicino a 0.11, il sessantunenne è a 1.00 di distanza, chi guadagna $80,000 è a 1.08

Un valore estremo diventa 1 e schiaccia gli altri vicino a 0, quindi la normalizzazione min-max è adatta alle colonne senza valori anomali.

challenge icon

Sfida

Medio

Un torrefattore abbina i caffè che producono un’infusione simile. Ogni riga di beans rappresenta un caffè: temperatura dell’acqua (C), tempo di infusione (s) e caffeina (mg). Il programma legge le posizioni i e j; la funzione iniziale distance(a, b) misura la distanza tra due campioni.

  1. Applica il ridimensionamento min-max a beans.
  2. Stampa Every column from 0 to 1:, poi la tabella ridimensionata con 2 decimali.
  3. Stampa la loro distanza prima e dopo il ridimensionamento, come sotto.

Per altri tre caffè, alle posizioni 0 e 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

Provalo tu

import numpy as np


# Restituisce la distanza tra due campioni (da Why Scale Features)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# Una riga per ogni caffè: temperatura dell'acqua in C, tempo di infusione in secondi, caffeina in 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())

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Statistica per il machine learning

Esercitati da solo: Compilatore Python online