Menu
CoddyTech

Padronização

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

Muitos modelos aprendem melhor quando cada característica é centralizada em 0 e tem um desvio padrão de 1. A padronização faz isso: cada valor se torna sua pontuação z dentro da coluna.

Cinco abóboras, peso em kg e largura em cm:

Duas fileiras de pontos em um mesmo eixo, em desvios padrão: cinco pesos de abóbora de 8 a 40 kg e cinco larguras de 30 a 65 cm, cada fileira centralizada em sua própria média em 0, todas entre -1.6 e 1.6

A transmissão padroniza todas as colunas de uma só vez:

pumpkins = np.array([[30, 60],
                     [8, 30],
                     [22, 55],
                     [40, 65],
                     [15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))

Isso imprime:

[0. 0.]
[1. 1.]

Arredonde antes de verificar: sem arredondamento, uma média de 0 pode ser exibida como 2.22044605e-17, um pequeno erro de arredondamento.

Ao contrário do min-max, não há um intervalo fixo: a maioria dos valores fica entre -2 e 2.

challenge icon

Desafio

Médio

Uma fazenda leiteira identifica vacas incomuns. Cada linha de cows representa uma vaca: leite (litros por dia), peso (kg) e idade (anos), nomeados em features. O programa lê a posição de uma vaca, k.

  1. Complete standardize(X). As linhas de verificação então imprimem [0. 0. 0.] e [1. 1. 1.].
  2. Encontre o z-score da vaca k mais distante de 0, ignorando o sinal, e imprima-o como abaixo, com 2 casas decimais.

Para uma vaca de outra fazenda:

Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herd

Experimente você mesmo

import numpy as np

features = ["milk", "weight", "age"]
# Uma linha por vaca: leite em litros por dia, peso em kg, idade em anos
cows = np.array([[28, 610, 6],
                 [22, 540, 3],
                 [35, 680, 6],
                 [31, 590, 9],
                 [19, 650, 4],
                 [26, 520, 2],
                 [30, 600, 7]])
k = int(input())


# Retorna X com todas as colunas padronizadas: média 0 e desvio padrão 1
def standardize(X):
    # Substitua a linha abaixo pela padronização
    return X


# Não altere as três linhas abaixo: elas verificam sua função
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# Escreva seu código abaixo: o que chama a atenção na vaca k
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