Menu
CoddyTech

Escalonamento Min-Max

Parte da seção Estatística para ML do Journey de Machine Learning da Coddy. Lição 48 de 64.

A normalização min-max dá a cada característica uma participação justa: em cada coluna, o menor valor se torna 0, o maior se torna 1, e os demais ficam entre eles.

Adicione uma pessoa de 40 anos que ganha $80,000 e, em seguida, escale os quatro:

Idades e rendas de quatro clientes em uma tabela, uma seta e, em seguida, a mesma tabela escalada: em cada coluna, o menor valor passou a ser 0.00 e o maior, 1.00, com tonalidade mais escura; os demais ficaram entre eles

O broadcasting faz isso em uma linha, com o menor valor e o intervalo próprios de cada coluna:

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)

Agora a idade também conta. O vizinho mais próximo do cliente 0 não é mais o cliente de 61 anos:

Os clientes normalizados como pontos em um quadrado de 0 a 1, com linhas partindo do cliente 0: o cliente de 26 anos está mais próximo, a 0.11; o cliente de 61 anos está a 1.00 de distância; o cliente que ganha $80,000 está a 1.08

Um valor extremo se torna 1 e comprime os demais perto de 0, então a normalização min-max é adequada para colunas sem valores discrepantes.

challenge icon

Desafio

Médio

Um torrefador combina cafés que são preparados de forma semelhante. Cada linha de beans representa um café: temperatura da água (C), tempo de preparo (s) e cafeína (mg). O programa lê as posições i e j; a função inicial distance(a, b) mede a distância entre duas amostras.

  1. Aplique a escala min-max a beans.
  2. Imprima Every column from 0 to 1: e, em seguida, a tabela escalonada com 2 casas decimais.
  3. Imprima a distância entre eles antes e depois do escalonamento, como abaixo.

Para outros três cafés, nas posições 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

Experimente você mesmo

import numpy as np


# Retorna a distância entre duas amostras (de Why Scale Features)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# Uma linha por café: temperatura da água em C, tempo de preparo em segundos, cafeína em 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())

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Estatística para ML

Pratique por conta própria: Compilador de Python online