Menu
CoddyTech

Perché scalare le feature

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

Quale cliente è più simile a uno nuovo? Molti modelli misurano la distanza tra i campioni: elevano al quadrato lo scarto di ciascuna caratteristica, li sommano e calcolano la radice quadrata.

Una persona di 25 anni che guadagna $52,000 rispetto a una persona di 61 anni che guadagna $53,000:

Due barre che mostrano quanto ogni caratteristica contribuisce alla distanza tra i due clienti: l'età, con una differenza di 36 anni, contribuisce per 1,296, una sottile strisciolina quasi invisibile; il reddito, con una differenza di $1,000, contribuisce per 1,000,000, una barra lunga

Per un'intera tabella, axis=1 somma i quadrati di ogni riga e .argmin() trova la riga più vicina:

a = np.array([25, 52000])  # età, reddito
X = np.array([[61, 53000],   # la persona di 61 anni
              [26, 55000]])  # una persona di 26 anni che guadagna $55,000
dists = np.sqrt(((X - a) ** 2).sum(axis=1))
print(np.round(dists, 2))
print(dists.argmin())

Stampa:

[1000.65 3000.  ]
0

La persona di 61 anni è la più vicina: i dollari hanno numeri più grandi, quindi $1,000 supera 36 anni. Senza normalizzazione, decidono le unità più grandi.

Questo capitolo dà a ogni funzionalità la giusta considerazione.

challenge icon

Sfida

Medio

Un negozio confronta le lavatrici in base al prezzo ($), al consumo energetico (kWh all'anno) e all'acqua (litri per lavaggio), indicati in features. Il programma legge le posizioni di due macchine, i e j. Stampa:

  1. Squared gaps: lo scarto di ciascuna caratteristica, elevato al quadrato.
  2. Distance: arrotondata a 2 decimali.
  3. Dominant feature: il nome della caratteristica con lo scarto al quadrato più grande.

Per altre due macchine:

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

Provalo tu

import numpy as np

features = ["price", "energy", "water"]
# Una riga per ogni lavatrice: prezzo in dollari, consumo energetico in kWh all'anno, acqua in litri per lavaggio
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())

# 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