Menu
CoddyTech

Broadcasting

Parte da seção Dados e gráficos do Journey de Machine Learning da Coddy. Lição 13 de 60.

Os modelos aprendem melhor quando cada característica fica em torno de 0. Então, você subtrai a média de cada coluna dos valores dessa coluna, e o NumPy copia as médias para todas as linhas:

A tabela de 3 por 2 de alturas e pesos, menos a linha das médias 170 e 70 copiada para todas as três linhas, é igual à tabela centralizada: 0 e -10, 10 e 10, -10 e 0

No código, para as alturas e os pesos de três pessoas:

data = np.array([[170, 60],
                 [180, 80],
                 [160, 70]])
print(data - data.mean(axis=0))

Isso imprime:

[[  0. -10.]
 [ 10.  10.]
 [-10.   0.]]

Essa cópia é transmissão. A tabela agora está centralizada: cada valor indica a distância em relação à média da sua coluna.

As médias têm formato (2,): um valor por coluna da tabela (3, 2). Qualquer outro comprimento interrompe a execução com um erro.

challenge icon

Desafio

Fácil

Um aplicativo de fitness centraliza cada tabela antes do treino. O código inicial chama center em duas tabelas, users (3 características) e workouts (2), e imprime os resultados. No momento, center retorna a tabela sem alterações.

Complete center para que subtraia a média de cada coluna dessa coluna, independentemente do número de colunas. Mantenha as linhas abaixo dela como estão.

Com dois usuários e dois treinos, a saída ficaria assim:

Centered users:
[[-6.  7. -5.]
 [ 6. -7.  5.]]
Column means after centering: [0. 0. 0.]
Centered workouts:
[[-10. -90.]
 [ 10.  90.]]
Column means after centering: [0. 0.]

Experimente você mesmo

import numpy as np


def center(table):
    # Retorne table com a média de cada coluna subtraída
    # Escreva seu código abaixo
    return table


# Uma linha por usuário: idade, frequência cardíaca em repouso, minutos de exercício por dia
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# Uma linha por treino: minutos, calorias queimadas
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# Não altere as linhas abaixo
print("Centered users:")
print(center(users))
print("Column means after centering:", np.round(center(users).mean(axis=0), 2))
print("Centered workouts:")
print(center(workouts))
print("Column means after centering:", np.round(center(workouts).mean(axis=0), 2))
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 Dados e gráficos

Pratique por conta própria: Compilador de Python online