Menu
CoddyTech

Mise à l’échelle Min-Max

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

La normalisation min-max donne à chaque caractéristique une juste place : dans chaque colonne, la plus petite valeur devient 0, la plus grande 1, et les autres se situent entre les deux.

Ajoutez une personne de 40 ans gagnant 80 000 $, puis normalisez les quatre valeurs :

Âges et revenus de quatre clients sous forme de tableau, une flèche, puis le même tableau normalisé : dans chaque colonne, la plus petite valeur est devenue 0.00 et la plus grande 1.00, avec une teinte plus foncée, les autres valeurs se situant entre les deux

La diffusion le fait sur une seule ligne, avec la valeur minimale et l’étendue propres à chaque colonne :

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)

L’âge compte maintenant aussi. Le voisin le plus proche du client 0 n’est plus celui de 61 ans :

Les clients mis à l’échelle représentés par des points dans un carré de 0 à 1, avec des lignes partant du client 0 : la personne de 26 ans est la plus proche à 0.11, celle de 61 ans est à 1.00, la personne qui gagne 80 000 $ est à 1.08

Une valeur extrême devient 1 et rapproche le reste de 0, donc la normalisation min-max convient aux colonnes sans valeurs aberrantes.

challenge icon

Défi

Moyen

Un torréfacteur associe les cafés qui s’infusent de manière similaire. Chaque ligne de beans correspond à un café : température de l’eau (C), durée d’infusion (s) et caféine (mg). Le programme lit les positions i et j ; la fonction distance(a, b) fournie dans le code de départ mesure la distance entre deux échantillons.

  1. Appliquez une mise à l’échelle min-max à beans.
  2. Affichez Every column from 0 to 1:, puis le tableau mis à l’échelle avec 2 décimales.
  3. Affichez leur distance avant et après la mise à l’échelle, comme ci-dessous.

Pour trois autres cafés, aux positions 0 et 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

Essayez vous-même

import numpy as np


# Renvoie la distance entre deux échantillons (tiré de Why Scale Features)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# Une ligne par café : température de l’eau en C, temps d’infusion en secondes, caféine en 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())

# É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