Menu
CoddyTech

Pourquoi mettre les caractéristiques à l’échelle

Fait partie de la section Statistiques pour le ML du Journey Machine Learning de Coddy. Leçon 47 sur 64.

Quel client ressemble le plus à un nouveau client ? De nombreux modèles mesurent la distance entre les échantillons : mettez au carré l’écart de chaque caractéristique, additionnez-les, puis prenez la racine carrée.

Une personne de 25 ans gagnant 52 000 $ face à une personne de 61 ans gagnant 53 000 $ :

Deux barres représentant la contribution de chaque caractéristique à la distance entre les deux clients : l’âge, un écart de 36 ans, contribue à hauteur de 1 296, une fine barre trop mince pour être visible ; le revenu, un écart de 1 000 $, contribue à hauteur de 1 000 000, une longue barre

Pour un tableau entier, axis=1 additionne les carrés de chaque ligne et .argmin() trouve la ligne la plus proche :

a = np.array([25, 52000])  # âge, revenu
X = np.array([[61, 53000],   # la personne de 61 ans
              [26, 55000]])  # une personne de 26 ans gagnant $55,000
dists = np.sqrt(((X - a) ** 2).sum(axis=1))
print(np.round(dists, 2))
print(dists.argmin())

Cela affiche :

[1000.65 3000.  ]
0

La personne de 61 ans est la plus proche : les dollars se comptent en nombres plus grands, donc 1 000 $ l’emportent sur 36 ans. Sans mise à l’échelle, ce sont les unités les plus grandes qui décident.

Ce chapitre donne à chaque fonctionnalité la place qu’elle mérite.

challenge icon

Défi

Moyen

Un magasin compare des machines à laver selon leur prix ($), leur consommation d’énergie (kWh par an) et leur consommation d’eau (litres par lavage), indiqués dans features. Le programme lit les positions de deux machines, i et j. Affichez :

  1. Squared gaps: l’écart au carré de chaque caractéristique.
  2. Distance: arrondie à 2 décimales.
  3. Dominant feature: le nom de la caractéristique ayant le plus grand écart au carré.

Pour deux autres machines :

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

Essayez vous-même

import numpy as np

features = ["price", "energy", "water"]
# Une ligne par machine à laver : prix en dollars, consommation d’énergie en kWh par an, consommation d’eau en litres par lavage
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())

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Statistiques pour le ML

Entraînez-vous par vous-même : Compilateur Python en ligne